【发布时间】:2014-05-06 01:07:50
【问题描述】:
假设我有一个 C 程序,它使用 fork() 和 exec() 生成一些子进程。父级保留其子级的pids 列表。有时,它会尝试使用WNOHANG 对他们进行waiting,并通知用户他们是否已终止。
然后程序决定退出。我必须明确kill 然后wait 在剩余的子进程上,以免它们变成僵尸吗?根据维基百科:
"僵尸进程不应与孤儿进程混淆:孤儿进程是仍在执行中,但其父进程已经死亡的进程。这些不会成为僵尸进程;相反,它们被 init (process ID 1),它等待它的孩子。"
所以这表明等待是不必要的。但是如果程序的孩子已经变成了僵尸,程序在等待他们之前就退出了怎么办?基本上,如果父进程退出,父进程的僵尸子进程是否总是会被正确回收?
【问题讨论】: