免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: sevenover
打印 上一主题 下一主题

[Linux] 父进程退出后子进程为什么没有被1号init收养 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
11 [报告]
发表于 2015-01-27 10:46 |只看该作者
嗯。你那个回复后面带#号,是怎么弄出来的啊。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
12 [报告]
发表于 2015-01-27 10:48 |只看该作者
回复 10# super皮波

嗯。你理解的很好啊,Unix环境高级编程都看过吧。我还在学习呢。


   

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:57:09
13 [报告]
发表于 2015-01-27 23:33 |只看该作者
回复 10# super皮波


    缓冲区应该只在父进程中刷新了一次,子进程没有执行刷新缓冲区的代码。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:57:09
14 [报告]
发表于 2015-01-27 23:40 |只看该作者
回复 9# sunlw78


    这个程序可以正常结束。
子进程每秒钟打印一次i的值,一共打印30次,也就是30秒之后退出。
父进程5秒钟之后打印一句话然后退出。
所以父进程比子进程先结束,然后子进程变成了孤儿进程,接着被另一个进程收养了(这也是LZ要讨论的内容)。
父进程退出后再过大约25秒之后子进程也退出了,这就是大概的执行过程。

至于你的疑问我觉得应该是父进程退出了子进程是否还会继续运行吧?
答案是会的,也就是上面我们所说的,子进程会变成孤儿进程继续执行。子进程是父进程fork()出来的,它有自己独立的运行空间,跟线程是两码事。进程退出了线程也就结束了,但是子进程并不会结束。具体的可以去看看fork()的相关资料,fork()在不同的平台上的实现是不同的。

论坛徽章:
0
15 [报告]
发表于 2015-01-29 10:10 |只看该作者
你这是子进程先退出啊

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:57:09
16 [报告]
发表于 2015-01-30 00:07 |只看该作者
回复 15# hanhan12312


    怎么会是子进程先退出呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP