1. 孤儿进程
- 父进程先于子进程结束,则子进程成为孤儿进程。子进程的父进程会变为init进程,称为init进程领养孤儿进程
2. 僵尸进程
- 子进程终止后,父进程尚未对其进行回收,子进程残留资源(PCB)存放于内核中,变成僵尸进程
- 僵尸进程是不能用kill命令清除的。因为kill命令只能终止进程,而僵尸进程已经终止。
3. 如何回收僵尸进程
- 父进程通过调用wait函数或者waitpid函数来进行回收。
4. 如何回收子进程
- 方式一:在父进程中调用wait或者waitpid函数来实现回收子进程
- 方式二:子进程结束会向父进程发送一个SIGCHLD信号,而父进程收到这个信号默认处理动作是忽略。我们可以捕捉该信号,在捕捉函数中实现对子进程状态的回收。