Linux------特殊进程
一、孤儿进程
定义:当一个进程的父进程先于它终止,该进程就会成为孤儿进程。
产生原因:父进程意外崩溃、被强制终止(如 kill -9),或父进程主动退出但未正确处理子进程。
特点:
失去父进程后,会被系统的“祖先进程”(Linux 中是 init,PID=1)收养。
仍能正常运行,完成自身任务后会正常终止。
不会占用额外资源,是一种正常的进程状态。
影响:
本身是系统正常处理机制的结果,无负面影响,反而避免了进程成为“无主进程”
例如:若父进程因 bug 崩溃,子进程被 init 收养。
二、僵尸进程
定义:进程终止后,内核未释放其进程控制块(PCB),该进程状态变为Z(僵户态),成为僵尸进程;
产生原因:父进程未调用wait()或waitpid()等系统调用,读取子进程的退出状态(如退出码、终止原因),导致内核无法回收PCB;
特点:
已终止运行,不再执行任何代码,但PCB仍占用内存资源(如页表项);
通过ps命令中显示状态为Z或者是Z+(僵户态),名称可能为<defunct>;
影响:
系统PID数量有限,大量僵尸进程会耗尽PID资源,导致新进程无法创建;
不占用用户空间的内存数据段,但内核空间的PCB资源仍然存在;
处理方式:
预防:父进程调用wait()/waitpid()主动回收子进程状态;
清除:kill -9无法直接杀死僵尸进程(已终止,无运行)。
