繁体   English   中英

调用exec后,子进程会怎样?

[英]What happens to the child process after calling exec?

我是系统编程的新手,并对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 child\n");
    }
    else{
        printf("Hello from parent!\n");
        printf("Iam the parent\n");
    }
    return 0;
}

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

exec()系列函数将当前过程映像替换为新的过程映像。 本手册页中描述的功能是execve(2)的前端。 (有关替换当前过程映像的更多详细信息,请参见execve(2)的手册页。)

exec系列用新的过程映像替换当前过程映像,因此execl之后什么也不会发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM