linux模式实现孤儿进程

孤儿进程

  • 父进程如果提前退出,那么子进程就称之为“孤儿进程”
  • 孤儿进程被1 号进程收养

模拟实现孤儿进程

//模拟实现孤儿进程 
 #include <stdio.h> 
 #include <unistd.h>

 int main()
 {
     pid_t pid;

     pid = fork();

     if( pid == -1){
         perror("fork");
         return 1;
    }

     if(pid == 0){
         int times=20;
         while(times--){
             printf("子进程:%d\n",times);   
             sleep(1);
         }

         printf("子进程死亡\n");
     }else if(pid > 0 ){
          int times = 10;
         while(times--){
              printf("父进程:%d\n",times);
             sleep(1);
         }
          printf("父进程死亡\n");
     }
     return 0;
 }

测试结果

这里写图片描述

整个代码运行过程如上图,分别在1,2,3处进程进程查看,1处为正常状态,2处为父进程死亡,子进程还在继续运行,3处为子进程死亡,整个过程结束

这里写图片描述

由上图可知2号进程(PID=3755)的PPID为3754,刚好为1号进程(PID=3754)的PID,因此2号进程为1号进程的子进程,此时父子进程同时运行。

这里写图片描述

这时父进程已完成并且退出,但子进程并没有完成, 考虑到该子进程已经没有父进程,因此将1号进程(PID=1)作为该子进程的父进程,在子进程结束时由1号进程(PID=1)进行回收。整个过程到此就结束了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值