僵死进程

僵死进程
僵死进程,又称僵尸进程,是计算机科学中的一个概念,指在操作系统中,子进程已退出,但其父进程未正确处理SIGCHLD信号,导致子进程处于等待状态的现象。[1][2][3]

形成原因

僵死进程的形成通常是由于子进程在调用exit命令结束自身时,未能真正销毁,而是留下了名为僵尸进程的数据结构。在这种状态下,子进程虽然放弃了几乎所有的内存空间,且没有可执行代码,也无法被调度,但它仍然存在于进程列表中,等待父进程为其收尸。如果父进程未安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,也没有显式忽略该信号,子进程就会一直处于僵死状态。即使拥有root权限,也无法通过kill -9命令杀死僵死进程。一种常见的解决方案是杀死僵死进程的父进程,使其成为孤儿进程,由1号进程init接管并清理。

特征

僵死进程的特点是在进程列表中保留了一个位置,用于存储其退出状态等信息,以便其他进程收集。此外,僵死进程并不占用额外的内存空间。