<aside> 💡 exec 函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件
</aside>
一般用法:先使用fork创建子进程,再调用exec函数族替换进程的内容
参数
path
:需要指定的执行的文件的路径或者名称
arg
:执行替换后可执行文件所需要的参数列表
返回值
#include <unistd.h>
#include <stdio.h>
int main() {
// 创建一个子进程,在子进程中执行exec函数族中的函数
pid_t pid = fork();
if(pid > 0) {
// 父进程
printf("i am parent process, pid : %d\\n",getpid());
// 避免产生孤儿进程
sleep(1);
}else if(pid == 0) {
// 子进程
// 子进程执行 ps -aux 指令
execl("/bin/ps", "ps", "aux", NULL);
perror("execl");
printf("i am child process, pid : %d\\n", getpid());
}
for(int i = 0; i < 3; i++) {
printf("i = %d, pid = %d\\n", i, getpid());
}
return 0;
}
<aside>
💡 execlp
会到环境变量中查找指定的可执行文件,如果找到了就执行,找不到就执行不成功
</aside>