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

假设我们有一个父进程,并且在调用一个fork来创buildsubprocess之后调用一个exec函数。

现在,subprocess会发生什么情况:它会像原来的父进程那样工作,这样用户就不会发现父进程被其他二进制代替的区别了吗?

我觉得这个问题不同于以下问题,subprocess会发生什么? 。

if ( (pid == fork ()) != 0 ) { if (strcmp(cmd,"mypwd")==0) { execlp (“mypwd”,0); } ... ... else if (strcmp(cmd,"myexit")==0) exit(1); } 

父进程的pid在exec之后保持不变,所以进程层次不会受到影响。

这种方法的问题是,新取代的父进程一般不会意识到它以前已经产生了一个孩子,不会waitwaitpid 。 这会导致子进程在退出时变成僵尸。