在使用 popen 函数的时候,如果不注意的话,可能会引起僵尸进程 defunct 的存在,虽然该进程不占用内存和 CPU,但是会在进程任务管理树上占用一个宝贵的节点。这样就造成了进程名额的资源浪费,所以一定得处理僵尸进程!
下面以 python 为例来说明:
python 脚本如下(zombie.py):
#!/usr/bin/env python
#-*-encoding:UTF-8-*-
import os
import time
import subprocess
if __name__ == '__main__':
p = subprocess.Popen('ls',shell=True,close_fds=True,bufsize=-1,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
file = p.stdout.readlines()
for i in range(0, len(file)):
print file[i]
#end for
while True:
time.sleep(1)
#end while
#end if
运行结果如下: