exec函数族介绍
c语言中没有重载,因为不允许同名函数
一系列功能相似的函数称为函数族
exec函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容。
程序在运行的时候,fork一个子进程,然后在子进程中调用exec,替换成指定的可执行文件。因为当前的进程执行exec把本身内容替换掉不合理。所以先创建子进程再执行exec
exec函数族执行成功不会返回,只有调用失败了,才会返回-1.
execl函数
子进程输出了hello,world,说明替换成功,子进程只执行了hello.c里面的内容,但由于此处是孤儿进程,所以打印的东西没有在一起。
#include <unistd.h>
#include <stdio.h>
#include <sys/types.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){
//子进程
execl("hello","hello",NULL);
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;
}
加了一个sleep
execlp函数
从环境变量中查找指定的可执行文件