1.exec族函数的作用:我们用fork函数创建新进程后,经常会在新进程调用exec函数去执行另外一个程序。 当进程调用exec函数时,该进程被完全替换为新程序,因为调用exec函数并不创建新进程,所以前后进程的ID并没有改变。

2.功能:在调用进程内部执行一个可执行文件。 可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。

3.exec函数族分别是:execl,execlp,execv,execvp,execle,execvpe
函数原型:

#include <unistd.h>
extern char **environ;int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execle(const char *path, const char *arg,..., char * const envp[]);
int execvpe(const char *file, char *const argv[],char *const envp[]);

参数说明:

  • path:可执行文件的路径名字
  • arg: 可执行程序所带的参数,第一个参数为可执行文件名字,没有带路径且arg必须以NULL结束
  • file:如果参数file中包含 / ,则就将其视为路径名,否则就按PATH环境变量,在它所指定的各目录中搜寻可执行文件

返回值:exec函数族的函数执行成功后不会返回,调用失败时,会设置errno(调用perror函数可以知道发生错误的原因)并返回-1,然后从原程序的调用点接着往下执行

4.exec族函数参数极难记忆和分辨,函数名中的字符会给我们一些帮助:
l : 使用参数列表
p:使用文件名,并从PATH环境进行寻找可执行文件
v:应先构造一个指向各参数的指针数组,然后将该数组的地址作为这些函数的参数。
e:多了envp[]数组,使用新的环境变量代替调用进程的环境变量

//文件execl.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>int main(void)
{printf("before execl\n");if(execl("./echoarg","echoarg","abc",NULL) == -1)   {printf("execl failed!\n");perror("why");        // why: No such file or directory   没有这样的文件或目录}printf("after execl\n");return 0;
}
//文件echoarg.c
#include <stdio.h>int main(int argc,char *argv[])
{int i = 0;for(i = 0; i < argc; i++){printf("argv[%d]: %s\n",i,argv[i]); }return 0;
}

执行结果:

说明:我们先用gcc编译echoarg.c,生成可执行文件echoarg并放在当前路径 下。文件echoarg的作用是打印命令行参数。然后再编译execl.c并执行execl可执行文件。用execl 找到并执行echoarg,将当前进程main替换掉,所以”after execl” 没有在终端被打印出来。

exec族函数(execl, execlp, execle, execv, execvp, execvpe)相关推荐

  1. Linux 进程11【exec族函数(execl, execlp, execle, execv, execvp, execvpe)】

    linux进程-exec族函数(execl, execlp, execle, execv, execvp, execvpe) 原文链接:https://blog.csdn.net/u014530704 ...

  2. Linux进程5:exec族函数(execl, execlp, execle, execv, execvp, execvpe)总结及exec配合fork使用

    exec族函数(execl, execlp, execle, execv, execvp, execvpe)及exec配合fork使用 exec族函数函数的作用: 我们用fork函数创建新进程后,经常 ...

  3. exec族函数————execl, execlp, execle, execv, execvp, execvpe

    exec族函数 exec族函数的作用[^1] exec族函数的定义 函数原型: exac函数归为带l.带p.带v.带e 四类来说明参数特点 一.带l的一类exac函数(l表示list),包括execl ...

  4. linux进程---exec族函数(execl, execlp, execle, execv, execvp, execvpe)

    原文链接:https://blog.csdn.net/u014530704/article/details/73848573 exec族函数函数的作用: 我们用fork函数创建新进程后,经常会在新进程 ...

  5. 10.linux进程---exec族函数(execl, execlp, execle, execv, execvp, execvpe)

    1.exec族函数函数的作用: 1.exec族函数的作用: 我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序.当进程调用exec函数时,该进程被完全替换为新程序.因为 ...

  6. Linux进程—exec族函数 execl, execlp, execle, execv, execvp

    exec族函数的作用: 我们用fork函数创建新进程后,经常会在新进程中调用exec族函数去执行新的程序:当该进程调用exec族函数时,该进程被替代为新程序,因为exec族函数并不创建新进程,所以前后 ...

  7. 10--linux进程---exec族函数(execl, execlp, execle, execv, ex ecvp, execvpe)

    原文链接: https://blog.csdn.net/u014530704/article/details/73848573?ops_request_misc=%257B%2522request%2 ...

  8. 学习笔记——exec族函数详解(execl, execlp, execle, execv, execvp, execvpe )

    exec族函数的定义 定义 exec函数族提供了一个在进程中启动另一个程序执行的方法.它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段.代码段和堆栈段,在执行完之后,原调用 ...

  9. exec族函数详解(execl, execlp, execle, execv, execvp, execvpe )

    1.exec族函数的作用 exec函数族提供了一个在进程中启动另一个程序执行的方法.它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段.代码段和堆栈段,在执行完之后,原调用进 ...

最新文章

  1. cannot find package “github.com/coreos/go-systemd/journal”
  2. 【目录】 Git 教程
  3. 【Vegas原创】mysql更改用户密码之无敌方法
  4. mysql long类型_怒肝两个月MySQL源码,我总结出这篇2W字的MySQL协议详解(超硬核干货)!!...
  5. 使有用计算机不注意卫生,保护眼睛注意细节有哪些
  6. [设计模式]简单工厂和工厂方法模式适用场景
  7. java定义一个方法,返回一个浮点数保留两位小数,考虑四舍五入的结果
  8. oracle 10g SQL* Plus主机字符串
  9. 升级drupal4.0.0_Drupal从1.0到8.0的简要历史
  10. linux设备驱动归纳总结(八):1.总线、设备和驱动【转】
  11. bzoj1577 [Usaco2009 Feb]庙会捷运Fair Shuttle
  12. 生活随记 - 2020国庆第一天
  13. 电脑PC端实现微信多开
  14. java校园导航_基于VRML和JAVA的虚拟校园漫游导航系统的设计和实现
  15. 计算机中常用单位是什么意思,常用单位的换算(含温度、长度、计算机单位、面积以及数量级含义).doc...
  16. 重装系统后计算机无法启动,重装系统后电脑重启没反应是怎么回事?如何解决呢?...
  17. 条形码生成EAN-13码(用JavaScript生成)
  18. 嘟嘟噜~~~第一次写博,纪念一下
  19. What Makes a Great Maintainer of Open Source Projects?
  20. 文件系统的层次结构的理解总结

热门文章

  1. (附源码)ssm+mysql+ssm健康饮食推荐系统分析与设计 毕业设计261631
  2. CAD中的dxf文件解析(三):多段线篇
  3. 使用Chrome-headless模式下,截屏不全屏的问题
  4. cfiot物联网开发平台测试报告
  5. YOLO-YOLOV5训练结果认识初探记录
  6. 最新麦芒装饰装修小程序源码Ver3.2.59+全开源代码
  7. 2010年-2020年数学二真题之常微分方程
  8. 揭秘自媒体人最担心的五个问题,句句戳心!
  9. Vscode连接远程服务器(一套配置成功)
  10. 针对小程序的漏洞挖掘