linux 孤儿进程和僵尸进程

回顾

上一节说了 当 调用 execl execlp 函数 时 不用拷贝多余的空间 就可以实现多一个命令(或是多多个命令) 相当于运行一个代码 可以最多实现n个功能 具体还要根据 execl  execlp的设定 
1 execl  函数可以是有c文件的参数 
2 但是 execlp 只能有固定命令参数和命令名字 不能是执行创建的 (hello.c )
比如 ps aux  ls -l 就是固定命令参数和命令名字
ls ,ps 就是命令名字  -l aux 就是命令参数
继续往下学

一 孤儿进程

在这里插入图片描述

孤儿进程就是 被父进程 抛弃了子进程就出门了 这是子进程就是孤儿进程 最后会人收养它 那就是
养父进程 并且类型就是int的 就是int 进程
必须是父进程才能抛弃子进程 也就是 释放子进程控制块 的意思
父进程抛弃完之后 空间就更多了 也就是进程结束之后 能够释放用户空间的意思

1 孤儿进程代码实现 和 查看

#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>


int main()
{
     pid_t a;

     a=fork();

     if(a>0)
     {   
             printf("father pid is %d\n",getpid());    
     }
     else if(a==0)
     { 
               sleep(2);
            printf("child pid is %d ppid is %d \n",getpid(),getppid());
      
     }

     return 0;
}


因为父进程是从main开始执行的 所以到了子进程的if判断while sleep(2); 睡眠 2ms
相当于挂起了 退出了 

在这里插入图片描述

其实 father pid 是main进程的身份 
child ppid 才是真实的父进程的身份
所以查父进程变化 信息 是  1 1 0 9 6 5
指令 ps aux | grep 1 1 0 9 6 5
为什么父进程对应不上呢
先查看他的 pid  对应了什么任务

在这里插入图片描述

systemd 是int类型的 也就是养父进程  
养父进程收养了子进程

二 僵尸进程

在这里插入图片描述

父进程一直在工作 却不知道子进程的信息 这时子进程就变僵尸进程了 
 退出了工作 父进程只能收僵尸的信息了  

1 僵尸进程代码实现和查看

#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>


int main()
{
     pid_t a;

     a=fork();

     if(a>0)
     {
            while(1){          
                 printf("father pid is %d\n",getpid());
                 sleep(2);           
            }          
     }
     else if(a==0)
     {   
    printf("child pid is %d ppid is %d \n",getpid(),getppid());     
     }

     return 0;
}

在这里插入图片描述

defunct :僵尸进程 和对应的二进制文件
如果杀死 会不会存在
注意不是杀死子进程 而是杀死了父进程 才能让僵尸进程不存在  
因为父进程是主导的 子进程是被动的

在这里插入图片描述

在这里插入图片描述

其实产生僵尸进程 杀死不杀死 都是一个没有生命周期的进程   
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值