栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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

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

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

一、孤儿进程

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

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

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

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

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

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

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

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1036334.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号