Linux进程之僵尸进程和孤儿进程简析

僵尸进程是指:一个子进程在其父进程没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。如果这个父进程还存在并且一直不调用wait(),那么这个僵尸进程将无法回收,等到其父进程退出后该进程将被init回收。

下面我们在Linux环境下验证一下,编写如下代码:
这里写图片描述

对代码作简要分析,用fork()函数创建进程,fork()函数有两个返回值,给子进程返回0,给父进程返回子进程的PID,如上代码,我们将父进程放在一个死循环中,让其一直存在,但不调用wait(),子进程输出一句后退出,就变成了僵尸进程。下面是运行结果:这里写图片描述

孤儿进程是指:一个父进程退出,而他的一个或者多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程最终将被init进程收养,并由init进程对它们完成状态收集工作。

编写如下代码:

这里写图片描述

我们看到,这里让子进程一直运行,让父进程输出一次后退出,子进程则一直存在,最后我们会看到它的PPID为1(即就是init进程)。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值