UNIX环境高级编程有一个例子说fork两次可以避免产生僵死进程,我不知道,为什么fork两次就能避免僵死进程?
2011-08-14 10:41
579 查看
2011年8月14日10:35:51我突然明白了为什么了。答案:
父进程fork一个子进程,子进程再fork一个孙进程之后子进程退出,孙进程没有父进程了而由init收养,此时孙进程永远不会变成僵尸进程了(init会处理他的,init内部实现是:只要有一个子进程终止,init会调用wait函数取得其终止状态,这样就防止了系统中有很多僵死进程)。而子进程由父进程处理了就OK了。
父进程fork一个子进程,子进程再fork一个孙进程之后子进程退出,孙进程没有父进程了而由init收养,此时孙进程永远不会变成僵尸进程了(init会处理他的,init内部实现是:只要有一个子进程终止,init会调用wait函数取得其终止状态,这样就防止了系统中有很多僵死进程)。而子进程由父进程处理了就OK了。
相关文章推荐
- UNIX环境高级编程学习之第十三章守护进程 - 初始化一个守护进程
- UNIX环境高级编程——初始化一个守护进程
- 为什么要fork两次来避免产生僵尸进程
- UNIX环境高级编程——初始化一个守护进程
- UNIX环境高级编程——初始化一个守护进程
- 一个Linux守候进程例子,避免产生僵死进程
- 调用fork两次以避免僵死进程的产生
- unix环境高级编程-第七章-进程环境
- UNIX环境高级编程——线程和fork
- UNIX环境高级编程--8. 进程控制
- 为学习APUE(Unix环境高级编程)偷懒,而写的脚本,基本上相当于一个简单的工程创建脚本了
- Unix环境高级编程笔记 :13、守护进程
- Unix环境高级编程—进程控制(二)
- 进程编程3 - UNIX高级环境编程第9章读书笔记
- 进程编程2 – Unix环境高级编程8章读书笔记
- 调用 fork() 两次以避免僵死进程
- (六) 一起学 Unix 环境高级编程 (APUE) 之 进程控制
- UNIX环境高级编程——进程环境
- UNIX环境高级编程——进程关系
- unix环境高级编程----进程控制wait()