概述:一般来说,fork创建一个子进程后,父子进程会执行相同的程序(fork后面的代码);此时如果要让子进程执行其他的程序就需要用到exec函数了。当进程调用exec函数时,该进程的用户空间代码和数据会完全被新的进程替换,从新程序的启动例程(main函数或者叫启动伊始程序)开始执行。调用exec并不创建新的进程,故调用exec函数前后进程的ID不变化。
1、exec函数族有什么作用? 运行一个进程。
2、exec之所以成为exec函数族,因为有6个以exec开头的函数,分别是execl、execlp、execle、execv、execvp、execvpe。其中主要用到的是execl(list)和execlp(path)两个函数。
3、exec函数族的特性:
①exec函数一旦调用成功即执行新的程序,不返回。失败时返回-1,故可以在exec函数后面直接调用perror和exit函数,不用加if来判断。
②函数参数最后要加一个结尾哨兵NULL。
③函数名字含义:l(list:命令行参数列表-执行文件,绝对路径)、p(path:搜索file时使用的path-从path环境变量查找文件来执行) 、e(environment) 、v(vector)
④函数族其他函数底层都是调用execv来实现的。
4、execlp函数
①示例:
#include<stdio.h>
#include<unistd.h&