僵尸进程和孤儿进程

基本概念

Linux中子进程由父进程创建,子进程可以在创建其他的子进程并成为他们的父进程,子进程和父进程的运行是一个异步过程:父进程不知道子进程运行状态。当一个进程终止后,他的父进程需要调用wait()和waitpid()函数来获取进程的终止状态。
Linux保证只要父进程想知道子进程结束是的状态信息,就可以得到。所以每一个进程结束后,内核释放该进程的所有资源,但仍然为其保留一定的信息(pid ,退出状态,运行时间等),直到父进程获取后才释放,则就导致,如果父进程没有获取到这些信息,这些信息将不会释放,其进程号就会一直被占用。

僵尸进程

子进程结束,父进程没有获取子进程结束的信息状态,子进程的进程描述符一直保存在系统中

  3 int main()
  4 {
  5 
  6         int pid = fork();
  7         if(pid < 0)
  8                 perror("fork error");
  9         else if(pid == 0){
 10                 printf("i am child!pid = %d,ppid = %d\n",getpid(),getppid());
 11                 exit(0);
 12         }
 13         else{
 14                 sleep(50);
 15                 printf("i am parent!pid = %d,ppid = %d\n",getpid(),getppid());
 17                 }
 19         return 0 ;
 20 }
 21 

让父进程sleep 保证子进程先结束

孤儿进程

一个父进程退出,而他的一个或者多个子进程还在运行,那么这些子进程变成孤儿进程,孤儿进程将被init进程(pid为1)所收养,并由init进程对他们完成状态收集的工作。

问题和危害

注意:所有的进程在exit后不会立马消失,而是进入僵死状态保留部分信息,等待父进程处理,若果父进程未处理则变成僵死进程。

僵死进程:大量的僵死进程得不到释放,会导致系统不能产生新的进程。僵死进程的根本问题在于父进程没有及时对子进程的结束信息作出处理。

孤儿进程:有1号进程回收孤儿进程,不会造成危害

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值