先理解下什么叫僵死进程?
僵死进程:如果子进程在父进程之前终止,那么一个已经终止,但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息,释放他仍占用的资源)的进程都被称为僵死进程。
(注意,被init进程领养的进程是不会变成僵死进程的,因为init会善后。。^^这段比较人性化)
那么我们再来理解一下为什么调用两次fork后可以避免僵死进程呢?
(我们用爷爷,父亲,儿子,来理解一下,呵呵听不懂当我胡诌)
首先爷爷进程是存在的,第一次fork后有了父亲进程,然后在fork一次就有了儿子进程。在产生儿子进程后父亲进程要想办法尽快exit了,这个尽快就是要保证在儿子进程exit之前exit了,因为那样,父亲进程在儿子进程之前终止的话,init进程会领养儿子进程,这样儿子进程的后事就有保证了,所以通过两次fork,产生儿子进程干事,而且这个进程是不可能变成僵死进程的,父亲进程只是一个短暂的过度进程(。。就当可以这样理解)。
阅读(1205) | 评论(0) | 转发(0) |