先了解一个概念:子进程在退出时用户区的资源可以自己释放,但是其所占据的内核资源(PCB)需要它的父进程来释放
1.僵尸进程
僵尸进程是由于,子进程先于父进程退出,但是父进程没有对子进程的资源进行回收(这里的资源指的是内核资源PCB),从而导致子进程的用户资源虽然已被释放,但还占据着PCB资源
原因:父进程不作为,没有对子进程进程进行回收
消灭僵尸进程的方法:杀死父进程,因为僵尸进程是不能被kill掉的
避免僵尸进程的方法:父进程对先行退出的子进程进行回收(循环调用wait或waitpid方法)
2.孤儿进程
孤儿进程是由于,父进程先于子进程退出,而此时子进程还在运行
由于孤儿进程不能释放自己的PCB资源,因此操作系统在检测到孤儿进程时,就会指定一个固定的进程(pid=1)来领养它,并在其退出时释放它的PCB资源
具体的例子可以详见:进程控制 | 爱编程的大丙 (subingwen.cn)