一 僵死进程:
(1)定义:内核为每个终止子进程保存一定量的信息,所以当终止进程的父进程调用wait或waitpid时,可以得到这些信息。这些信息至少包括:进程ID、该进程的终止状态、以及该进程使用的CPU时间总量。内核可以释放终止进程的所有存取区,关闭其所有打开的文件。
(2)怎样避免僵死进程的出现:
1.需要确认父进程为每个子进程的终止调用wait或waitpid。
2.另一种方法是两次fork(),而且使紧跟的子进程直接退出,这样造成孙子进程变成孤儿进程(orphaned),从而init进程将负责清除它。
3.把父进程杀掉。父进程死后,僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程.它产生的所有僵尸进程也跟着消失。
二 孤儿进程:
(1)定义:如果父进程在子进程终止之前终止,则子进程的父进程变为init进程,称这些进程为孤儿进程,由init进程领养。
(2)一个init进程领养的进程终止时不会变成僵死进程,因为init被编写成无论何时只要有一个子进程终止,init就会调用一个wait函数取得其终止状态。