僵尸进程和孤儿进程

一、概念的引入
在Linux环境中,子进程是父进程通过fork函数创建的,子进程和父进程相互独立,子进程和父进程的运行是异步的,当一个进程因为某种原因终止时,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。
1、僵尸进程
一个终止了但是没有被父进程回收的进程成为僵尸进程。
2、孤儿进程
如果一个进程正在运行但是它的父进程终止了,此时该进程就是孤儿进程,系统会安排init进程来回收孤儿进程,init进程的PID为1,是在系统启动之后由内核创建的,它永远不会终止。
二、僵尸进程和孤儿进程带来的危害
1、僵尸进程
虽然子进程已经退出了,但是在系统进程中还为它保留了一些退出状态的信息,如果父进程一直不读取这些退出状态的话,这些进程表项将一直被占用,系统进程表是一项有限资源,如果系统进程表被僵尸进程耗尽的话,系统可能无法创建新的进程。
2、孤儿进程
由于每次init进程都会回收孤儿进程,因此孤儿进程并不会造成什么危害。
三、验证僵尸进程和孤儿进程
1、验证僵尸进程
代码如下:
这里写图片描述
该程序的运行结果如下图:
这里写图片描述
如上图所示,由于子进程已经退出但是没有被父进程回收,因此成为了僵尸进程。
2、验证孤儿进程
代码如下:
这里写图片描述
该程序大的运行结果如下图:
这里写图片描述
由图可知,子进程为孤儿进程,并且他被1号进程回收。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值