【发布时间】:2011-11-09 06:01:04
【问题描述】:
我知道当一个进程没有很好地清理(它的资源没有被回收/回收)时,就会创建一个僵尸。调用 fork() 创建新进程后,父进程应始终在该进程上调用 waitpid 以清理它。
我还了解到,一个守护进程是通过 fork 一个本身由 fork 创建的子进程创建的,然后让该子进程死亡。显然,一旦您执行此操作,UNIX 中的 init 进程(pid #1)将接管该进程。
我想知道的是——据我所知,当父母去世时,它会自动清理孩子——那么僵尸最初是如何产生的?
其次,守护进程的父进程会死掉,那么为什么守护进程不被视为僵尸呢?
【问题讨论】:
-
有人想对匿名投票和关闭请求发表评论吗?我觉得这是一个非常可靠的问题。
-
可以说这更像是一个服务器故障问题,但进程管理与 *nix 编程有关,所以我认为它没有太大问题。
-
父进程死亡的进程是孤儿,而不是僵尸。僵尸是“活死人”;孤儿可以成为社会中富有成效的成员。
标签: unix daemon zombie-process