为什么没有僵尸进程?(原创)

本文通过一个简单的Python脚本实验探讨了僵尸进程的现象。在Debian5.0和LinuxKernel2.6.30环境下,作者使用fork和_exit尝试创建僵尸进程,却发现进程并未如预期般成为僵尸进程,引发了一系列关于僵尸进程机制及其处理方式的思考。

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

我的试验环境:Debian 5.0, Linux Kernel 2.6.30

 

试验代码:

import time
import os, sys


def handleChild(chNum):
  time.sleep(20)
  print "Hi, I'm child ", chNum
  os._exit(0)


if __name__ == '__main__':
  for i in range(5):
    childPid = os.fork()
    if childPid == 0:
      handleChild(i)
    else:
      print "Hi, I'm father, fork ", i

  time.sleep(40)

我用ps -ef反复观察,在子进程们自己exit之后,就纷纷消失,没有出现在进程列表里

并且,在子进程消失之前,直接kill 子进程号,也可以令其消失

 

为什么没有看到僵尸进程呢?

这让我一直不理解,其实以前我就不理解为什么写内核的大佬们,为什么不解决掉僵尸进程这个大麻烦,要我们double-fork,或者wait来自己玩

是不是现在已经解决这个Bug了?

 

PS: 今天又试了一下,发现os._exit(0)和sys.exit(0)都会造成僵尸进程。上次的实验真是见鬼了。结贴!

转载于:https://www.cnblogs.com/maodouzi/archive/2010/06/28/1766452.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值