当父进程调用exec命令时,子进程会发生什么

时间:2015-07-29 07:34:20

标签: c linux unix

假设我们有一个父进程,如果它调用了一个exec函数,则在调用fork来创建子进程之后。

现在,子进程会发生什么:它是否会像原始父进程一样运行,这样用户就不会发现父进程被其他二进制文件替换的差异?

我认为这个问题与以下问题不同 what happens to child process?

if ( (pid == fork ()) != 0 )
{
    if (strcmp(cmd,"mypwd")==0)
    {
        execlp (“mypwd”,0);
    }

    ...
    ...

    else if (strcmp(cmd,"myexit")==0)
        exit(1);
}

1 个答案:

答案 0 :(得分:3)

父进程的pid在exec之后将保持不变,因此进程层次结构不会受到影响。

这种方法的问题在于,新替换的父进程通常不会意识到它先前已经生成了一个孩子,并且不会在其上调用waitwaitpid。这将导致子进程退出时成为僵尸。