僵尸进程是指它的父进程已经退出(父进程没有等待(调用wait/waitpid)它),而该进程dead之后没有进程接受,就成为僵尸进程,也就是(zombie)进程。
一个进程在调用了exit命令之后结束了自己的生命时候,你以为是真的被彻底销毁了吗?其实不然,它只是变成了我们称之为“僵尸进程”状态。在用户态程序调用系统调用exit时,也仅仅限于将一个正常的进程变成了一个僵尸进程,并没有完全的销毁。看下图所示:
在Linux中,进程的状态有5种,其中僵尸进程状态是一种比较奇葩的存在方式,它放弃了几乎所有的内存地址空间,也没有任何的可执行的代码,也不可能被调度器再次调度,它仅仅是在进程列表中保留一个位置,在这个位置中记载了该进程的状态。而它也只是静静的等待着其他进程(父进程后者init进程)为他收尸。
假如它的父进程没有安装SIGCHL