僵死进程定义
在Unix术语中一个已经中止、但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息、释放它仍占用的资源)的进程被称为僵死进程(可以用ps查看僵死进程,它的状态为Z)
实现
int main(void) {
pid_t pid;
if((pid = fork()) < 0) {
err_sys("fork error");//fork创建子进程失败
}else if(pid == 0) {
printf("i am child");
exit(0);//子进程退出
}else {
sleep(30);//将父进程休眠30s,在这30s之内子进程成为僵死进程,可用ps命令查看
printf("i am parent");
}
waitpid(pid,NULL,0);//处理子进程
exit(0);
}
在子进程退出,父进程还在休眠的时候使用ps axu命令可以看到我们创建的几个进程里有一个进程的状态为Z,即为僵死进程,在父进程休眠结束后会被waitpid()处理掉。