专栏首页陶士涵的菜地[编程] C语言Linux系统编程-等待终止的子进程(僵死进程)

[编程] C语言Linux系统编程-等待终止的子进程(僵死进程)

1.等待终止的子进程(僵死进程):

如果一个子进程在父进程之前结束,内核会把子进程设置为一个特殊的状态,处于这种状态的进程称为僵死进程

当父进程获取了子进程的信息后,子进程才会消失。

pid_t wait(int *status);

父进程调用这个方法会被阻塞住,如果子进程终止的时候,此方法会调用并且返回终止子进程的pid

#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
int main(){
        int pid,ppid;

        int ret=fork();
        if(ret>0){
                pid=getpid();
                ppid=getppid();
                printf("我是父进程,pid=%d , ppid=%d ,我新建的子进程pid=%d\n",pid,ppid,ret);
                int status;
                int sonPid=wait(&status);
                printf("我的子进程,pid=%d,终止了\n",sonPid);
        }else if(ret==0){
                sleep(2);
                pid=getpid();
                ppid=getppid();
                printf("我是子进程,pid=%d , ppid=%d \n",pid,ppid);
        }else if(ret==-1){
                perror("fork");
        }   
}

输出:

我是父进程,pid=22315 , ppid=12479 ,我新建的子进程pid=22316

我是子进程,pid=22316 , ppid=22315

我的子进程,pid=22316,终止了

2.如果父进程在子进程之前终止了,那么系统会把子进程设置给init进程(pid为1),init进程会周期性的等待所有的子进程,确保没有长时间的僵死进程

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [Linux]C语言Linux系统编程创建进程

    每一个进程都由一个唯一的标识符表示,即进程ID,简称pid.系统保证在某时刻每个pid都是唯一的。

    陶士涵
  • [linux] C语言Linux系统编程-做成守护进程

    2.在新守护进程的父进程中,调用exit(),为了守护进程的爷爷进程确认父进程结束

    陶士涵
  • [PHP]解决500错误问题-nginx以及fpm没有任何错误日志

    但是php-fpm下定义的www-error.log的错误日志以及nginx定义的error日志都没有任何显示

    陶士涵
  • [Linux]C语言Linux系统编程创建进程

    每一个进程都由一个唯一的标识符表示,即进程ID,简称pid.系统保证在某时刻每个pid都是唯一的。

    陶士涵
  • linux下的进程控制

    我们的一个系统在父进程退出后子进程偶尔出现不能正常的退出问题,这篇文章就是记录解决这个问题的过程。在unix系统上我们通过fork函数产生一个新的进程,这个新产...

    fluyy
  • 这些关于TensorFlow问题的解答,你不能错过

    作为目前最普及的深度学习框架,TensorFlow 实不必多做介绍。 无论国内外,有相当数量程序员以 TensorFlow 入门深度学习开发,逐步走上职业机器学...

    AI研习社
  • 干货 | 这些关于 TensorFlow 问题的解答,你不能错过

    用 10 周时间,让你从 TensorFlow 基础入门,到搭建 CNN、自编码、RNN、GAN 等模型,并最终掌握开发的实战技能。4 月线上开课, www.m...

    AI科技评论
  • IOS定位服务的应用 原

    在IOS8之后,IOS的定位服务做了优化,若要使用定位服务,必须先获取用户的授权。

    珲少
  • 第21天:NLP实战(五)——词向量Skip-gram实践

      前面通过四次的实战,大致的将自然语言处理中经常用到的算法过了一遍,并且循序渐进,由浅入深。由刚开始的教我们如何从零开始获取语料,并且进行常用的数据分析到深度...

    stefan666
  • 角点检测集锦(Harris,Shi-Tomasi,亚像素级角点检测)原理及相关实现

    一个像素所在的区域一般情况下可以分为以下三种情况,平坦,边,角点三种情况,如下图最右边。 在角点处,沿任意方向运动都会引起像素颜色的明显变化等价于:在角点...

    种花家的奋斗兔

扫码关注云+社区

领取腾讯云代金券