Bootstrap

Webserver(2.3)exec函数族

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函数

从环境变量中查找指定的可执行文件

;