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

linux--多进程开发基础(3) exec函数族

所谓函数族指的就是名称不一样但是实现的功能相似的函数,C中没有函数重载的概念,所以就用不同的函数名实现相同的功能。

exec函数

就是在原始进程中打开指定的可执行文件,并将打开的可执行文件中的用户数据替换到原始进程中去,此时原始进程的用户区数据包括代码全部被替换,只留下内核区的信息例如PID、PPID不变。
“类似狸猫换太子,太子的头衔还在,但是换成了狸猫”
exec函数族的函数执行成功后不会返回因为原始进程中的代码和变量数据都被替换掉了;但如果调用失败会返回-1

exec函数族如下:第一个参数都是可执行文件的路径或者是名称,后面的是该可执行文件运行所需要的参数

int execl(const char *path, const char *arg, .../* (char  *) NULL */);   //常用
int execlp(const char *file, const char *arg, ... /* (char  *) NULL */);  //常用
int execle(const char *path, const char *arg, .../*, (char *) NULL, char * const envp[] */);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[], char *const envp[]);
int execve(const char *filename, char *const argv[], char *const envp[]);

其中前面都是exec,不同的是后面的l、p、v和e
分别:

l(list) 参数地址列表,以空指针结尾 execl(“a.out”, “a.out”, “参数1”,“参数2”, NULL);
v(vector) 存有各参数地址的指针数组的地址 上面的参数 “参数1”,“参数2”,这些用{“1”,“2”}代替
p(path) 按 PATH 环境变量指定的目录搜索可执行文件 它搜索按照环境变量的地来搜索,有p或者e的就给个文件名就行,有l的那么就给路径path
e(environment) 存有环境变量字符串地址的指针数组的地址

例如:
int execl(const char *path, const char *arg, .../* (char *) NULL */);

  • path:需要指定的执行的文件的路径或者名称

  • arg:是执行可执行文件所需要的参数列表。第一个参数一般没有什么作用,为了方便,一般写的是执行的程序的名称,从第二个参数开始往后,就是程序执行所需要的的参数列表,参数最后需要以NULL结束(哨兵)


http://www.kler.cn/a/561351.html

相关文章:

  • JavaWeb-GenericServlet源码分析(适配器/模板方法)
  • Sui 通过 SCION 推进网络安全与性能
  • Log | Hugo+PaperMod+Github创建自己的博客网站
  • 在ubuntu如何安装samba软件?
  • MongoDB03 - MongoDB索引,事务和安全
  • mac下载MAMP6.8.1
  • 可重入与可重入锁:多线程编程中的安全卫士
  • rust学习笔记6-数组练习704. 二分查找
  • MySQL数据,查询QPS,TPS 数据
  • 二分查找理解
  • xss-lab
  • 计算机视觉算法实战——异常检测(主页有源码)
  • OpenGL 03--顶点着色器、片段着色器、元素缓冲对象
  • 刷题日记5
  • 【TVM教程】为 NVIDIA GPU 自动调度神经网络
  • 【STM32】使用电打火器测试火焰传感器,去掉传感器LED依然亮
  • 使用torch.compile进行CPU优化
  • .NET Core MVC IHttpActionResult 设置Headers
  • IDEA-插件开发踩坑记录-第五坑-没有飞机场导致无法访问GITHUB导致的讨厌问题
  • 【深度学习神经网络学习笔记(一)】深度学习介绍