当前位置: 首页 > news >正文

Linux 进程:exec函数簇

目录

  • (1)execl
  • (2)execlp
  • (3)execle
  • (4)execv
  • (5)execvp
  • (6)execve

  在进程控制中提到,子进程的最大价值在于程序替换,而exec函数簇就是用来进行程序替换的函数,本文会简要的讲解如何去使用exec函数簇。

  extern char **environ:这是全局变量,里面存储着环境变量。

  • int execl(const char *path, const char *arg, …);
  • int execlp(const char *file, const char *arg, …);
  • int execle(const char *path, const char *arg,…, char * const envp[]);
  • int execv(const char *path, char *const argv[]);
  • int execvp(const char *file, char *const argv[]);
  • int execve(const char *file, char *const argv[],char *const envp[]); 系统调用接口

(1)execl

int execl( const char *path, const char *arg, ...)

  • const char *path:新程序的名称(要带程序的路径)
  • const char *arg:函数运行参数,不定参,可以有多个,但最后要以NULL结尾。

 返回值:失败返回-1

  示例:execl(“./main”,“./main”,“a”,“b”,NULL)

  如图:我们运行的程序名称是./main,但是在运行时还给予了参数 a、b。程序名本身也是一个参数。

运行参数

(2)execlp

int execlp( const char *file, const char *arg, ...)

  • const char *file:新程序名(不带路径,因为系统会去path环境变量指定的路径下面去找对应的程序,常用于指令程序替换)
  • const char *arg: 运行时参数,不定参,可以有多个,但最后要以NULL结尾

 返回值:失败返回-1

  示例:execlp(“ls”,“ls”,“-l”,NULL)

(3)execle

int execle( const char *path, const char *arg , ..., char * const envp[]);

  • const char *path:新程序名称(要带路径)
  • const char *arg :参数,不定参,可以有多个,但最后要以NULL结尾
  • char * const envp[]:envp里面是环境变量

 返回值:失败返回-1

  示例:execle(“./main”,“./main”,“-a”,NULL,envp)

(4)execv

int execv( const char *path, char *const argv[]);

  • const char *path:新程序名称(要带路径)
  • char *const argv[]:参数,参数不是一个一个给,而是存在字符数组中一次性给。

 返回值:失败返回-1

  示例:char * argv[]={“./main”,“a”,“b”,NULL}
     execv(“./main”,argv)

(5)execvp

int execvp( const char *file, char *const argv[]);

  • const char *file:新程序名(不带路径,在path环境变量指定的路径下面去找程序,常用于指令程序替换)
  • char *const argv[] :运行时参数,参数用数组传递

 返回值:失败返回-1

  示例:char * argv[]={“ls”,“-a”,“-l”,NULL}
     execvp(“ls”,argv)

(6)execve

int execve(const char *file, char *const argv[],char *const envp[]);

这是系统调用接口,其他五个都是封装的库函数。

  • const char *file:新程序名称(要带路径)
  • char *const argv[]:运行时,参数不是一个一个给,而是存在字符数组中一次性给。
  • char *const envp[]:envp里面是环境变量

 返回值:失败返回-1

  示例:char * argv[]={“./main”,“a”,“b”,NULL}
     execve(“./main”,argv,envp)

相关文章:

Linux 进程:exec函数簇

目录(1)execl(2)execlp(3)execle(4)execv(5)execvp(6)execve在进程控制中提到,子进程的最大价值在于程序替换,…...

极简RSS订阅器Miniflux

什么是 Miniflux ? Miniflux 是一个极简主义的 RSS 阅读器。它简单、快速、轻便且非常易于使用。Miniflux 是静态编译的单个二进制文件,没有使用任何复杂的框架,也没有外部依赖,简单、快速、轻巧且超级容易安装。支持 Atom、RSS 1…...

网络通信快速入门

🏡个人主页 : 守夜人st 🚀系列专栏:Java …持续更新中敬请关注… 🙉博主简介:软件工程专业,在校学生,写博客是为了总结回顾一些所学知识点 目录网络编程实现网络编程的三要素&#x…...

【阅读文档】Vue.js 2.0 之教程文档

系列文章目录 提示:阅读本章之前,请先阅读目录 文章目录系列文章目录前言兼容性Devtools开发版和生产版安装Vue-cli编译器Vue.js 是什么最基本的Vuev-bind 指令split 和 reverse 搭配v-model 双向绑定vue-component 定义组件v-bindObject.freeze箭头函数…...

Docker【基本使用】

1:启动Docker1.1:操作systemctl start docker.service1.2:常见问题【第一步】启动docker,提示启动失败,查询运行状态systemctl start docker.service【第二步】查询docker运行状态,提示不支持SELinux【第三…...

算法leetcode|39. 组合总和(rust重拳出击)

文章目录39. 组合总和:样例 1:样例 2:样例 3:提示:分析:题解:rustgoccpythonjava39. 组合总和: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找…...

JavaSE学习笔记总结day18

今日内容 零、 复习昨日 一、作业 二、进程与线程 三、创建线程 四、线程的API 五、线程状态 六、线程同步 零、 复习昨日 晨考 一、作业 见答案 二、进程与线程[了解] 一个进程就是一个应用程序,进程包含线程 一个进程至少包含一个线程,大部分都是有多条线程在执行任务(多线…...

HybridFusion: LiDAR和视觉交叉源点云融合

一、基本信息 研究方向: 大场景点云配准 HybridFusion: 它可以在户外大型场景中从不同视角记录交叉源密集点云。 团队链接:http://www.adv-ci.com 视频链接: https://www.bilibili.com/video/BV1vM41147yD/?spm_id_from333.337.sear…...

走进JVM

JVM的位置 在操作系统之上,可以想象成一个软件,Java程序都运行在上面 JVM结构图 JVM调优的位置 99%的调优在堆中,极少数在方法区中 很多第三方插件都是在执行引擎那块地方做出修改而来,比如Lombook在程序运行时动态生成get/s…...

C语言-基础了解-15-C函数指针与回调函数

C函数指针与回调函数 一、函数指针 函数指针是指向函数的指针变量。 通常我们说的指针变量是指向一个整型、字符型或数组等变量,而函数指针是指向函数。 函数指针可以像一般函数一样,用于调用函数、传递参数。 函数指针变量的声明: type…...

react和vue在响应式上的不同理解

vue和react的区别总是被提及,关于这个问题最近也有了自己的想法。我认为它们之间最大的区别是对于响应数据变化的实现方式不同。 vue实现响应的方法是,首先收集依赖这个数据的副作用(视图更新、计算属性等),当数据修改…...

多线程二 多线程了解与使用

文章目录synchronized 锁有两种synchronized异常捕获主线程和子线程volatile的作用notify是随机启动等待线程中的一个synchronized 锁有两种 类对象类的实例 第一种:锁类对象,有两种方式,如下: // 方法一:synchroni…...

嵌入式 Linux 的僵尸进程是什么?

目录 1、什么是僵尸进程? 2、僵尸进程的目的 3、怎么避免僵尸进程? 4、僵尸进程的处理方法 4.1 wait()连接 4.2 waitpid()函数 1、什么是僵尸进程? 首先内核会释放终止进程(调用了 exit …...

【刷题笔记】笔记一

1.自守数牛客链接解析&#xff1a;1.自守数的结尾肯定是 0&#xff0c;1&#xff0c;5&#xff0c;62.把数字转换为string类&#xff08;方便比较&#xff09;3.直接find在s2 里面 使用find查找另一个即可。#include <iostream> #include<string> using namespace …...

浏览器主页被hao123劫持的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理…...

华为OD机试题 - 热点网络统计(JavaScript)| 含代码编写思路

华为OD机试题 最近更新的博客使用说明本篇题解:热点网络统计题目输入输出描述示例一输入输出示例二输入输出Code解题思路华为OD其它语言版本最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华…...

IT项目经理的自我修养手册

在不断进步的时代&#xff0c;任何岗位职责都是一个责任、权力与义务的综合体&#xff0c;有多大的权力就应该承担多大的责任&#xff0c;有多大的权力和责任应该尽多大的义务&#xff0c;任何割裂开来的做法都会发生问题。那么作为IT项目经理的岗位职责&#xff0c;我大概列举…...

2023年软考中级电子商务设计师考什么?

首先&#xff0c;电子商务设计师属于软考中级&#xff0c;因此难度也不是特别大。但并不是说就完全没有难度&#xff0c;难度还是有的&#xff0c;像上午题一般把基本知识点掌握了&#xff0c;是没什么问题的&#xff0c;重点就在于下午题会比较难。 接下来我们来剖析一下考试…...

现在的00后太强了,几个问题差点给我问懵了

前言 我们公司刚入职一个00后小伙&#xff0c;今天在办公室交流了一下&#xff0c;他问我会不会自动化测试&#xff0c;我说懂一点&#xff0c;然后直接问了我几个自动化测试问题&#xff0c;差点直接给我问懵了&#xff01; 问题如下&#xff1a; 我们在制定自动化测试实施…...

$3 : 水​​​​​项目实战 - 水果库存系统

javase知识点复习&#xff1a; final关键字&#xff1a;http://t.csdn.cn/bvFgu 接口的定义&#xff0c;特性&#xff0c;实现&#xff0c;继承&#xff1a;http://t.csdn.cn/tbXl3 异常&#xff1a;http://t.csdn.cn/VlS0Z DAO的概念和角色&#xff08;设计理念&#xff09;&a…...

数据中心碳减排:工作负载迁移与服务器调度优化

1. 数据中心碳减排技术概述 在数字经济时代&#xff0c;数据中心作为信息基础设施的核心载体&#xff0c;其能源消耗和碳排放问题日益凸显。据统计&#xff0c;全球数据中心电力消耗已占全球总用电量的1-2%&#xff0c;且随着AI、云计算等技术的快速发展&#xff0c;这一比例仍…...

如何在Windows 11上让经典游戏重获新生:DDrawCompat兼容性解决方案详解

如何在Windows 11上让经典游戏重获新生&#xff1a;DDrawCompat兼容性解决方案详解 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_m…...

基于CircuitPython与加速度计的魔法9号球:嵌入式交互项目实践

1. 项目概述&#xff1a;当硬件遇上玄学&#xff0c;用代码打造你的专属“决策神器”在嵌入式开发的世界里&#xff0c;我们常常与传感器、显示屏和逻辑代码打交道&#xff0c;构建着一个个解决实际问题的智能设备。但谁说硬件项目就一定要严肃刻板&#xff1f;今天&#xff0c…...

基于Claude的AI招聘系统:从简历解析到智能评估全流程实践

1. 项目概述&#xff1a;当Claude成为你的招聘官最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“hire-from-claude”。光看名字&#xff0c;你可能会觉得有点玄乎&#xff0c;难道是要让AI来面试和招聘人类&#xff1f;其实&#xff0c;这个项目的核心思路&#xff0c;是…...

Python邮件自动化实战:基于mymailclaw的监控报警与Slack集成

1. 项目概述与核心价值最近在折腾邮件自动化处理的时候&#xff0c;发现了一个挺有意思的开源项目&#xff0c;叫psandis/mymailclaw。乍一看这个名字&#xff0c;你可能会联想到“邮件抓取”或者“邮件爬虫”。没错&#xff0c;它的核心定位就是一个用 Python 写的邮件客户端自…...

基于CircuitPython的Fruit Jam OS:在RP2350上构建复古微型计算机系统

1. 项目概述&#xff1a;当复古计算精神遇见现代微控制器如果你和我一样&#xff0c;对早期个人计算机那种开机即用、一切尽在掌控的纯粹体验抱有怀念&#xff0c;同时又痴迷于现代开源硬件带来的无限可能&#xff0c;那么Fruit Jam OS绝对是一个会让你眼前一亮的项目。它不是一…...

RTX 5090功耗传闻解析:600W显卡对PC生态的挑战与应对

1. 项目概述&#xff1a;从一则功耗新闻到显卡生态的深度思考最近&#xff0c;英伟达下一代旗舰显卡RTX 5090的功耗传闻在硬件圈里炸开了锅。消息称其TGP&#xff08;总图形功耗&#xff09;可能高达600W&#xff0c;相比RTX 4090的450W&#xff0c;直接激增了150W。这不仅仅是…...

AI对话记忆管理实战:memory-organizer库解决长上下文难题

1. 项目概述&#xff1a;一个为AI记忆体“瘦身”与“归档”的利器最近在折腾一些本地大语言模型&#xff08;LLM&#xff09;的应用&#xff0c;比如搭建个人知识库助手或者长期对话机器人&#xff0c;一个绕不开的痛点就是“记忆”的管理。模型本身没有持久记忆&#xff0c;每…...

从“客户匿名”到“可验证”:技术服务案例的工程化写法

在撰写技术服务案例时&#xff0c;我们经常面临一个挑战&#xff1a;客户要求匿名&#xff0c;但案例又需要让潜在客户相信效果。如何平衡&#xff1f;结合文澜天下科技在AI搜索优化项目中的实践&#xff0c;分享一种“可验证”的案例写法。一、定位具体行业和场景 不写“某教育…...

AI如何学习科学品味:从多模态特征到科研评估系统构建

1. 项目概述&#xff1a;当AI开始学习“科学品味” 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“AI-Can-Learn-Scientific-Taste”。光看名字&#xff0c;你可能觉得这又是一个关于AI模型训练或者科学计算的常规项目。但点进去仔细琢磨&#xff0c;你会发现它的野心远…...