Linux 僵尸进程 ( Zombie or defunct )
关于Linux僵尸进程,一般是由于子进程结束的时候,会有一些资源没有释放掉,直到父进程结束或者由父进程去处理它才可以!
僵尸进程就是子进程已经结束,但是父进程没有处理的进程!
父进程可以使用waitpid,wait等来处理僵尸进程!
if 父进程不幸在子进程之前“死了”,那么子进程就交由init( pid == 1 )进程去管理~
我们可以测试以下:
具体的程序解释看代码的注释!
gcc -o 1 1.c
3115 pts/0 00:00:00 bash
3172 pts/1 00:00:00 bash
3228 pts/0 00:00:00 1
3237 pts/1 00:00:00 ps
所以一般情况下if需要子进程的结果来做一些判断 ,那么我们应该是需要wait或waitpid的,但是很多时候是可以直接忽略的,对于僵尸进程来说,消耗的src虽然少,但是一旦僵尸建成多了也是会影响性能的,所以还是需要注意的!