You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

僵尸进程是否最终会被init进程接管?两段描述为何冲突?

关于《The Linux Programming Interface》中僵尸进程描述的困惑与澄清

我正在阅读《The Linux Programming Interface》一书,发现书中关于僵尸进程的两段描述似乎存在冲突:

当父进程调用wait()时,内核会移除僵尸进程,因为不再需要该子进程的剩余信息。另一方面,如果父进程未调用wait()就终止,init进程会接管该子进程并自动执行wait(),从而将僵尸进程从系统中移除。

如果父进程创建子进程后未调用wait(),则该僵尸子进程的条目会永久保留在内核进程表中。若大量此类僵尸子进程被创建,最终会填满内核进程表,阻碍新进程的创建。

第一段表示,即使父进程未调用wait()就终止,init进程会接管僵尸进程并在其终止时清理。而第二段则称,若父进程未调用wait(),其长期运行的子进程会变为僵尸进程并永久占用内核进程表。我对此感到困惑:既然init进程会处理僵尸进程,第二段描述的情况为何会发生?或者init进程在何种情况下不会接管僵尸进程?

[更新] 我确实误读了文本,感谢Barmar的指正,这两段描述的是不同场景。

内容的提问来源于stack exchange,提问作者my_question

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:15:51