sunlw78 发表于 2015-01-27 10:46

嗯。你那个回复后面带#号,是怎么弄出来的啊。

sunlw78 发表于 2015-01-27 10:48

回复 10# super皮波

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


   

sevenover 发表于 2015-01-27 23:33

回复 10# super皮波


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

sevenover 发表于 2015-01-27 23:40

回复 9# sunlw78


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

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

hanhan12312 发表于 2015-01-29 10:10

你这是子进程先退出啊

sevenover 发表于 2015-01-30 00:07

回复 15# hanhan12312


    怎么会是子进程先退出呢?
页: 1 [2]
查看完整版本: 父进程退出后子进程为什么没有被1号init收养