孤儿进程与僵尸进程
孤儿进程与僵尸子进程
孤儿进程
一个父进程退出,而它的一个或者多个子进程还在运行,那么哪些子进程将成为孤儿进程。孤儿进程将被Init(进程号为1)进程收养,并由init进程对他们完成状态收集工作。
因init进程托管孤儿进程,故其不会有什么危害
僵尸进程
一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或者waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保留在系统中。这种进程称之为僵死进程。
子进程结束后,操作系统会为其保留进程号,退出状态,运行时间等信息。直到父进程使用wait或者waitpid来读取时才释放这部分信息,如果父进程移植不来读取的话,那么这段信息将会一直保留,进程号会一直占用。系统所能使用的进程号是有限的,如果存在大量僵死进程,将可能因没有可用进程号而无法闯将新的进程
点击查看代码
#include <sys/types.h>
#include <sys/wait.h>
pid_t waitpid(pid_t pid,int *status,int options);

浙公网安备 33010602011771号