孤儿进程与僵尸进程

孤儿进程与僵尸子进程

孤儿进程

一个父进程退出,而它的一个或者多个子进程还在运行,那么哪些子进程将成为孤儿进程。孤儿进程将被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);
posted @ 2022-03-25 20:35  xing_l  阅读(47)  评论(0)    收藏  举报