0%

问题整理

  1. 什么是僵死进程,什么时候出现

子进程退出时,父进程没有对子进程发出的 SIGCHLD 信号进行适当处理(waitpid或忽略),导致子进程停留在僵死状态等待父进程收尸,这种状态下的子进程称为僵死进程。

如果进程父进程不调用 wait / waitpid,那么保留的子进程信息(进程号,退出状态,运行时间等)不会释放,进程号会一致占用。由于系统的进程号是有限的,如果产生大量僵死进程,可能出现没有可用进程号,导致系统无法创建新的进程。

如何清除:

①改写父进程,

②把父进程杀掉,僵死进程成为孤儿进程,过继给 1 号进程 init,init 始终会负责清理僵死进程

  1. 什么是孤儿进程

父进程退出后,它的子进程还在运行,这些子进程将成为孤儿进程。孤儿进程将被 init 进程(进程 id 为 1)收养,并由 init 进程对它们进程状态收集工作。