Liunx下的僵死进程和孤儿进程

本文介绍了 Linux 下进程的七种状态,重点讲解了僵死状态的产生原因、定义及危害,并简要介绍了孤儿进程的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在linux内核下,一个进程可以有7个状态,分别是

“R”(running)运行状态

“S”(sleeping)睡眠状态

“D”(disk sleeping)不可中断睡眠状态,在这个状态的进程通常会等待IO的结束

“T”(stopped)中止状态

“t”(tracing stopped)阻塞状态

“X”(dead)死亡状态,只是一个函数do_exit()返回的状态

“Z”(zombie)僵死状态

僵死状态是一个比较特殊的状态,下面我们重点介绍一下僵死状态。

1 僵死进程的产生

当进程退出并且父进程(使用wait()系统调用)没有读取到子进程退出的返回代码时就会产生僵死进程。

僵死进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。

僵死进程的定义

一个子进程在其父进程没有调用wait()或waitpid()的情况下退出,这个子进程就是僵尸进程。

如果其父进程还一直存在而不调用wait(),则该僵尸进程无法收回,等到其父进程退出后被init收回

僵尸进程的危害

 僵尸进程会占用系统资源,如果很多,会严重影响服务器的性能。

 (1)有一个创建维持30秒的僵死进程的例子


运行结果如下图所示


(2)僵尸进程代码2


运行结果如下图所示


2 孤儿进程

孤儿进程的定义

一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被

init进程(进程号为1)所收养,并有init进程对他们完成状态收养工作。

下面是一段孤儿进程的代码


运行结果如下图所示




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值