Linux下的僵尸进程与孤儿进程
什么是僵尸进程(zombie)
僵尸进程指:一个进程使用fork()创建子进程,如果子进程退出,而父进程并没有调用wait()或waitpid()获取子进程的状态信息,那么子进程的某些信息如进程描述符等仍然保存在系统中。这种进程称为僵尸进程。
先看一个例子:
看一下运行结果:
僵尸进程的危害
僵尸进程会在系统中保留某些信息如进程描述符、进程id退出状态等,例如系统中可用的进程id是有限的,如果由于系统中产生大量的僵尸进程占用了进程id,就会导致没有可用的进程id,系统也就不能产生新的进程;什么是孤儿进程
孤儿进程指:当一个子进程的父进程结束时,子进程还在运行,此时,这个子进程就叫做孤儿进程。最后,孤儿进程会被init进程(进程id为1)进程收养,即将init作为孤儿进程的父进程,当子进程结束时,由init进程完成对它的状态收集工作。因此,孤儿进程是无害的。
看一个例子:
再看下运行结果: