<aside> 💡 exec 函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件

</aside>

一般用法:先使用fork创建子进程,再调用exec函数族替换进程的内容

Untitled

函数族

Untitled

Untitled

execl

Untitled

参数

返回值

使用案例

#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;
}

execlp

<aside> 💡 execlp会到环境变量中查找指定的可执行文件,如果找到了就执行,找不到就执行不成功

</aside>