父子进程---僵死进程

zombie
如果子进程在父进程之前终止,那么父进程如何得到子进程的终止状态呢?
内核为每个终止子进程保存了一定量的信息,当父进程调用wait,waitpid时,可以得到这些信息(进程ID,进程终止状态,进程的CPU使用总量)。
如果父进程没有去得到这些信息,并释放子进程仍然占用的内存,那么我们认为这个子进程编程一个僵死进程(zombie),僵死进程的状态打印为Z,ps依然可以看到。
当然,由init进程领养的进程不会成为僵死进程,因为init会自动进行处理
wait:
1.如果子进程还在运行,那么阻塞
2.如果子进程已经结束,则返回终止状态
3.如果没有任何子进程,则出错,返回-1
waitpid:
1.waitpid有个选项,可以使它不阻塞
2.可以具体地去等待某个进程
他们的函数原型是:
pid_t wait(int *staloc);
pid_t waitpid(pid_t pid,int *staloc,int options);
如果对终止进程返回的状态不感性,则参量staloc可以设为NULL
相关文章
相关标签/搜索