目录
1.僵尸进程概述
由一个例子引入:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
int main()
{
pid_t pid = fork();
if(pid >0){
printf("parent process \n");
while(1) sleep(1);
}
else if(pid ==0){
printf("child process \n");
exit(0);
}else
{
perror("fork failed");
exit(0);
}
}

这份代码子进程通子进程先于父进程终止。这种内存泄漏由僵尸进程导致的(残留的子进程PCB)【思考:为什么会残留】 exit里面调用_exit() 进程结束时负责释放进程资源 将0-3G都释放,内核空间释放部分PCB残留此为僵尸进程。除非父进程通过wait回收僵尸进程。
2.回收僵尸进程
1.wait()函数
wait()阻塞函数,子进程存在,但未产生僵尸,wait阻塞等待,产生僵尸后立即回收。
注意:wait每调用一次只能回收一次
#include <stdio.h>
#include <stdl

最低0.47元/天 解锁文章
695

被折叠的 条评论
为什么被折叠?



