C语言 调用 exec 后子进程会发生什么情况



我是系统编程的新手,很好奇exec函数是如何工作的。我的第一个问题是,为什么孩子在打电话给高管后从不打印"我是孩子"。exec 如何替换子进程?我的第二个问题是为什么程序(在调用 exec 之后(继续并在完全终止之前要求再添加一个命令行参数。我不确定这里发生了什么。任何人都可以解释正在发生的事情,将不胜感激。这是代码:

#include <stdio.h>
#include <unistd.h>
int main(void) {
    if(fork() == 0){
        printf("Hello from child!n");
        execl("/usr/bin/sort", "sort", "talk.c",NULL);
        printf("I'm the childn");
    }
    else{
        printf("Hello from parent!n");
        printf("Iam the parentn");
    }
    return 0;
}

您可以在 https://linux.die.net/man/3/execl 中阅读有关execl的信息

exec(( 系列函数将当前进程映像替换为新的进程映像。本手册页中描述的函数是 execve(2( 的前端。(参见 execve(2( 的手册页 来获取有关替换当前进程映像的更多详细信息。

exec族 将当前进程映像替换为新的进程映像,因此execl之后不会发生任何操作。

相关内容

最新更新