目录
- exec函数族介绍
- execl函数
- execlp函数
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函数
从环境变量中查找指定的可执行文件