免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1843 | 回复: 1
打印 上一主题 下一主题

孤儿进程和僵尸进程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-10 10:45 |只看该作者 |倒序浏览
僵尸进程:一个子进程在其父进程还没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。
   孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。

APUE中其操作过程大致是:在一个进程终止时,内核逐个检查所有活动进程,以判断它是否是正要终止的进程的子进程,如果是,则该进程的父进程ID就更改为1(init进程的ID)。这种处理方法保证了每个进程有一个父进程。

如果一个子进程先结束了,而其父进程后结束,在父进程里既没有忽略SIGCHID信号,也没有调用wait()为子进程收尸,就退出了。这时候,子进程是处于什么状态呢。既是僵尸进程,又是孤儿进程吧。

论坛徽章:
0
2 [报告]
发表于 2008-04-10 16:29 |只看该作者
>>如果一个子进程先结束了,而其父进程后结束,在父进程里既没有忽略SIGCHID信号,也没有调用wait()为子进程收尸,就退出了。这时候,子进程是处于什么状态呢。既是僵尸进程,又是孤儿进程吧。

在子进程退出而父进程没有退出这段时间, 子进程为僵尸进程, 当父进程退出时, 子进程就成了孤儿进程, 但是此时马上就会被init进程接管, init进程会调用wait-系列系统调用来释放子进程的一些资源. 此时子进程就完全消毁了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP