僵尸进程

僵尸进程

  • 什么是僵尸进程

    一个已经终止、但是其父进程尚未对其进行善后处理(获取进程终止信息、释放它仍占用的资源)的进程称为僵死进程。 —— APUE(中文版)P189

  • 什么时候会产生僵尸进程

    如果子进程终止了, 但是父进程运行时间较长, 甚至一直在循环, 不回收子进程信息, 这个时候系统内的僵尸进程就会越来越多。

  • 怎么去掉或防止产生僵尸进程

    1. 说去掉僵尸进程而不是杀死僵尸进程的原因也是为什么僵尸进程杀不死的原因, 僵尸进程无法使用kill -9杀死, 因为它已经死了…

    2. 去掉僵尸的方法当然是善后处理了, 如果父进程调用了wait等回收子进程信息的系统调用, 这个时候就会回收僵尸进程。

    3. 杀死父进程, 如果父进程死掉了, 这个时候僵尸进程会交给init进程处理, 系统会自动回收所有僵尸进程。

    4. 父进程设置忽略sigchld信号(signal(SIGCHLD, SIG_IGN);), 当子进程终止的时候会向父进程发送sigchld信号, 如果该进程忽略了该信号,那么就代表不关心进程信息, 这个时候操作系统回收子进程的资源。

    5. fork两次, 然后回收子进程, 孙子进程处理本该子进程处理的事情, 这个时候孙子进程就成了孤儿进程, 那么孙子进程的父进程就变成了init进程, 当它结束的时候系统自动回收资源。

  • 如何查看僵尸进程
    ps命令, 例如ps -aux
    在这里插入图片描述
    注意输出的第二行, 有个defunct, 第二行这个进程就是个僵尸进程。 stat为Z。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值