ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
kill -HUP 12334 -->(pid)
top -->(其中zombie是僵尸进程,直接kill -9 父进程)
点击查看代码
"""
python对僵尸进程三个解决方法
"""
import os, sys
from time import sleep
import signal
# os.wait()阻塞等待处理
def zombie1():
pid = os.fork()
if pid < 0:
print("Create process failed")
elif pid == 0:
print("Child pid:", os.getpid())
sys.exit("Child exit")
else:
"""os.wait()"""
cpid, status = os.wait()
print("pid:", cpid)
print("status:", status)
while True:
pass
# 创建二级子进程,一级子进程退出,让二级子进程交由系统管理,从而达到处理僵尸进程的目的
def zombie2():
pid = os.fork()
if pid < 0:
print("Create process failed")
elif pid == 0:
childpid = os.fork()
if childpid < 0:
pass
elif childpid == 0:
for i in range(3):
sleep(1)
print("two")
else:
print("pid:", os.getpid())
sys.exit("one process exit")
else:
onepid, status = os.wait()
print("one process kill")
for i in range(3):
sleep(1)
print("parent")
# signal子进程退出程序时会发送信号给父进程,如果父进程忽略该信号,则系统会处理子进程退出
def zombie3():
signal.signal(signal.SIGCHLD, signal.SIG_IGN)
pid = os.fork()
if pid < 0:
print("failed")
elif pid == 0:
print("create success:", os.getpid())
sys.exit("child exit")
else:
print("old process")
while True:
pass
zombie3()
收藏于:https://blog.csdn.net/qq_43513797/article/details/123790575