栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

关于僵尸进程,用来清理僵尸进程的方式_python 杀死进程?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于僵尸进程,用来清理僵尸进程的方式_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()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/787017.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号