Linux——让我们来聊聊进程3(孤儿进程)

我们上次讲到,僵尸进程是子进程先于父进程退出时,子进程所处的状态,这时没有人替它回收资源,它只能等待父进程结束了,由Init进程接管它,负责回收它的PCB。

但是如果父进程无法结束呢?比如是个死循环,那么它就只能一直保持着这种状态,除非父进程调用了函数接口回收资源。

这种状态是十分消耗资源的,因为进程号是有限的,僵尸进程的进程号不被回收就有可能有新的进程无法被分配到进程号,所以要尽量避免。

今天呢,我们要继续介绍下一个进程——孤儿进程。

一、孤儿进程

实际上孤儿进程从名字上都能猜出个大概了,它其实是父进程先于子进程退出,子进程所处的状态。正好和僵尸进程的情况相反。那父进程的已经退出了,谁会来回收它的资源呢?是由Init进程来回收的。

我们在Linux下写一个简单的代码测试一下孤儿进程。

if分支是子进程进入的循环,会持续20秒,而else是父进程进入的循环,持续5秒。显然父进程会先于子进程退出。

我们通过ps命令监控两个进程的状态吧!

前两行显示的是父进程还未退出的状态,此时可以看出来第二行是子进程的信息(它的ppid是第一行的pid)。

当父进程退出以后,子进程变成了孤儿进程,它的PID变成了1,也就是我们所说的Init进程,与我们预期的一致。 

孤儿进程还是比较好理解的一种状态,它和僵尸进程的差别在于,僵尸进程可能无人接管,这时会造成资源的浪费,但是孤儿进程没有这种问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值