免费注册 查看新帖 |

Chinaunix

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

[Linux] 关于两次fork的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-07 10:54 |只看该作者 |倒序浏览
本帖最后由 loopong 于 2013-07-07 10:55 编辑

最近看到有不少地方调用两次fork函数,fork之后,再调用一次fork,这样就有父,子,孙子三个进程,父进程再调用exit退出,孙子进程就被init接管了,实际上与最初的父进程脱离了关系,就不会僵死了。
这里有个问题,那就是孙子进程被init接管了,但子进程没有,子进程不是就变成僵尸进程了吗,搞来搞去,还是产生了一个僵尸进程。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2013-07-08 10:59 |只看该作者
那不是万能解决方案啊,孙子进程睡了2秒,保证中间进程先退出。

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
3 [报告]
发表于 2013-07-08 18:22 |只看该作者
fork两次不是因为僵死啊

是为了成为守护进程啊..........

论坛徽章:
0
4 [报告]
发表于 2013-07-22 15:03 |只看该作者
子进程退出了,才有孙子被init接管这一说,子进程怎么会成为僵死?

论坛徽章:
0
5 [报告]
发表于 2013-07-30 08:11 |只看该作者
本帖最后由 _lele 于 2013-07-30 08:37 编辑

父进程退出了,但子进程不会立刻成为僵尸进程的吧,只有在孙子进程退出了,且子进程也要退出之后子进程可能会成为僵尸进程的吧?但这里的情况应该是父进程退出了,同一命名空间的init进程应该会成为子进程的父进程的。。。。僵尸进程怎么产生的。?必须满足两个条件,1:进程被另一个进程或被用户杀死,2:父进程在子进程终止时没有调用wait4系统调用。所以你说的情况不会让子进程成为僵尸进程。你这里的子进程在父进程退出前没有退出,应该是被其它进程接管了,但是不是init就不知道(应该是同一命名空间的init进程)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP