LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 779|回复: 4

进程结束后为什么要进入僵尸状态?

[复制链接]
发表于 2004-9-23 13:48:46 | 显示全部楼层 |阅读模式
进程结束后为什么要进入僵尸状态?
这样做有什么好处吗?
发表于 2004-9-23 16:14:25 | 显示全部楼层
因为父进程可能要取得子进程的退出状态等信息
发表于 2004-9-24 09:59:58 | 显示全部楼层
并不是所有的进程运行完了都进入僵尸状态吧, 我记得只有在父进程没有waitpid, 或父进程死掉而子进程没有执行完,这时子进程进入僵尸状态,如果父进程不在了, 系统会将子进程的父进程设为init进程, 由init进程回收子进程的资源,
发表于 2004-9-24 11:16:12 | 显示全部楼层
最初由 JBug 发表
并不是所有的进程运行完了都进入僵尸状态吧,  

这个回答并不准确。任何一个子进程(init除外)在exit()之后,并非马上就消失掉,而是留下一个称为僵尸进程(Zombie)的数据结构,等待父进程处理。这是每个子进程都在结束时都要经过的阶段。如果子进程在exit()之后,父进程没有来得及处理,这时用ps命令就能看到子进程的状态是“Z”。如果父进程能及时处理,可能用ps命令就来不及看到子进程的僵尸状态,但这并不等于子进程不经过僵尸状态。
如果父进程在子进程结束之前退出,则子进程将由init接管。init将会以父进程的身份对僵尸状态的子进程进行处理。
 楼主| 发表于 2004-9-25 23:28:49 | 显示全部楼层
3x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表