文档章节

僵死进程

曾劲松
 曾劲松
发布于 2016/05/07 15:08
字数 490
阅读 57
收藏 4

        是指子进程退出时,父进程并未对其发出的SIGCHILD信号进行适当处理,导致子进程停留在僵死状态等待其父进程为其收尸,这个状态下的子进程就是僵死进程。一个已经终止但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息,释放它仍占用的资源)的进程称为僵尸进程(zombie)。

        在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵死进程,无法正常结束,此时即使是root身份kill -9也不能杀死僵死进程。补救办法是杀死僵尸进程的父进程(僵死进程的父进程必然存在),僵死进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵死进程。

       

怎么查看僵尸进程

        利用命令ps,可以看到有标记为Z的进程就是僵尸进程。

怎样来清除僵尸进程

1.改写父进程,在子进程死后要为它收尸。具体做法是接管SIGCHLD信号。子进程死后,会发送SIGCHLD信号给父进程,父进程收到此信号后,执行waitpid()函数为子进程收尸。这是基于这样的原理:就算父进程没有调用wait,内核也会向它发送SIGCHLD消息,尽管对的默认处理是忽略,如果想响应这个消息,可以设置一个处理函数。

2.把父进程杀掉。父进程死后,僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程.它产生的所有僵尸进程也跟着消失。





© 著作权归作者所有

共有 人打赏支持
曾劲松
粉丝 4
博文 198
码字总数 141022
作品 0
武汉
孤儿进程与僵尸进程【比较】

今天在群里聊起僵尸进程,才发现自己把僵尸进程和孤儿进程搞混了,简直不能原谅。速度查了一下,原来如此。感谢原作者的分享,如下: 1、基本概念   我们知道在unix/linux中,正常情况下,...

006玩命
2015/06/01
0
0
每天一个linux命令(47):ps命令

Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,...

姬风
2014/04/10
0
0
linux之ps命令——进程命令简单介绍

介绍: Linux 查看进程ps命令,非常强大的进程查看命令。使用ps命令可以查看进程状态、进程有没有僵死、进程占用资源等等。 详细: 语法:ps [options] [--help]。 1、进程有5种状态 运行(正...

FrendLin
2016/07/07
33
0
Linux下调用system()函数导致的问题

前一段时间用了system()函数调用脚本启动另一个进程,发现两个问题: 1.执行killall命令杀新启进程时会连原进程一起kill掉. 2.原进程打开的侦听端口,如果新启动的进程不退出无法释放(socket资...

鉴客
2011/10/25
6.2K
1
关于 安装 fcitx4.0beta的一些问题

在这里的第一篇博文,记录下在使用 fcitx4.0 时的一些问题 。 1. fcitx 有个僵死进程的问题 fcitx 和 im-switch ,fcitx 有个僵死进程并且杀不死。好像这个问题一直都有,网上传的解决办法是...

君无畏
2010/10/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

docker run 创建一个新的容器并运行一个命令

docker run常用命令 docker run :创建一个新的容器并运行一个命令 语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 1.OPTIONS说明 -t:为容器重新分配一个伪输入终端,通常与 -i 同时使...

lwenhao
24分钟前
1
0
安装Win出现无法创建新的分区也找不到现有的分区解决方案

无法创建新的分区也找不到现有的分区 ### 首先在安装界面按下 Shift+F10### 在出现的CMD界面输入: diskpart 进入磁盘管理工具diskpart### 可以输入 : list disk 查看磁盘列表l...

Kxvz
27分钟前
1
0
关于 @ngrx/Store 下 obj 的扩展问题

昨天做 task 的时候,遇到了一个问题。 TypeError: can't define property "x": "obj" is not extensible 而我的代码是 public txTiles: Array<TransactionFilterTile>; constructor(priv......

IrisHuang
29分钟前
1
0
presto内存管理及调优

内存池 Presto有三种内存池,分别为GENERAL_POOL、RESERVED_POOL、SYSTEM_POOL。这三个内存池占用的内存大小是由下面算法进行分配的: builder.put(RESERVED_POOL, new MemoryPool(RESERVED...

张欢19933
30分钟前
1
0
Mysql5.7服务版安装

步骤1: 勾选同意协议 步骤2:选择Server only模式 步骤3:选择安装目录 步骤4:执行文件 步骤5:端口号与用户配置 步骤6:选择标准系统用户 Finish后,安装完成。...

lyle_luo
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部