为什么会有zombie这种进程?

发布于 2022-09-30 07:46:58 字数 95 浏览 16 评论 0

Linux为什么会设计这样一种进程?一个进程退出时为什么不去检查它自己的子进程是否有zombie的,还要让init进程去clean up。
谁能讲讲zombie进程的设计初衷阿?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

南冥有猫 2022-10-07 07:46:58

>>一个进程退出时为什么不去检查它自己的子进程是否有zombie的,还要让init进程去clean up。

父进程退出的时候子进程 可能还在运行.此时子进程不是zombie.检查有所多余. 父进程只有在显示的调用wait ,waitpid等函数的时候才去理会子进程的退出. 这个由程序员自己把握.
你可以考虑这种情况:
父进程有可能是被一个不可捕捉信号SIGKILL杀掉的.此时父进程需要立即结束.也不应该让他处理子进程的退出状态.
以上都是个人看法.

花辞树 2022-10-07 07:46:58

ok, 先同意你的看法,那继续往下想,那为什么一个子进程在结束时,系统不立即回收它的资源,而非要等到父 进程调用wait或者是等到父进程结束时,系统init进程才动作,这个回收时机的选择有什么玄机呢?

断爱 2022-10-07 07:46:58

原帖由 cppcraze 于 2005-12-1 15:30 发表
ok, 先同意你的看法,那继续往下想,那为什么一个子进程在结束时,系统不立即回收它的资源,而非要等到父 进程调用wait或者是等到父进程结束时,系统init进程才动作,这个回收时机的选择有什么玄机呢?

这一点很好解释了. 因为子进程的退出状态很重要.父进程可以选择获得它进行继续的处理.(主动获得)

在你怀里撒娇 2022-10-07 07:46:58

确实如此,刚看到些资料,再看了你讲的,明白了。
子进程结束时会给父进程发送一个SIGCHLD的信号,父进程可以选择处理这个信号,就ok了

thanks anyway!

淡淡離愁欲言轉身 2022-10-07 07:46:58

signal(SIGCHLD,SIG_IGN); //让父进程自动回收子进程

此生挚爱伱 2022-10-07 07:46:58

原帖由 allfresh 于 2006-5-9 23:28 发表
signal(SIGCHLD,SIG_IGN); //让父进程自动回收子进程

不是每个OS都通用

尘世孤行 2022-10-07 07:46:58

关于这个问题可以阅读
(1):<<Linux内核设计与实现>>的2.4那一节:进程终结,里面解释的比较清楚.
(2):<<Linux网络编程>>6.5:进程中止和6.6处理子进程死亡这两部分,讲的更是详细
可能让我说出来就不太清楚了,呵呵

无边思念无边月 2022-10-07 07:46:58

原帖由 duanjigang 于 2006-5-10 21:20 发表
关于这个问题可以阅读
(1):<<Linux内核设计与实现>>的2.4那一节:进程终结,里面解释的比较清楚.
(2):<<Linux网络编程>>6.5:进程中止和6.6处理子进程死亡这两部分,讲的更是详细
可能 ...

<<Linux网络编程>>也讲这些?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文