美文网首页
关于处理多进程的僵尸进程的问题

关于处理多进程的僵尸进程的问题

作者: hock_ | 来源:发表于2020-02-01 17:37 被阅读0次

        在使用多进程的过程中,当子进程结束后,如果主进程不对子进程进行回收处理

    子进程就会称为僵尸进程,当产生大量的僵尸进程的时候,就会占用计算机大量的资源

    这时候就需要对僵尸进程进行处理:

    处理方式:

        1:

            pid,status = os.wait()

            功能:再父进程中阻塞等待处理子进程退出

            返回值:pid退出的子进程的pid号

                    status 获取子进程退出状态

            是一个阻塞函数,必须等子进程运行完后再运行父进程

    2:

            pid,status = os.waitpid(pid,option)

            功能:再父进程中阻塞等待处理子进程退出

            参数: pid -1表示等待任意子进程退出

                      >0 表示等待对应PID号的子进程退出

                  option  0 表示阻塞等待

                          WNOHANG 表示非阻塞

    3:

    让父进程先退出

            1、父进程创建子进程等待子进程退出

            2、子进程创建二级进程后立即退出

            3、二级子进程成为孤儿,和原来的父进程各自执行事件

    4:

        最方便的最简洁的一种方法:

                使用不同之间的进程通信函数:

                        异步信号通信:

                                     signal.signal(signal.SIGCHLD,signal.SIG_IGN)

                                      对接收到的信号进行处理:SIGCHLD表示子进程状态改变对父进程发出的信号,SIG_IGN 表示对接收到的信号进行忽略

                       在该状态下,调用的子进程将不会产生僵尸进程,子进程会被丢弃

                        被系统自动回收就不会产生僵尸进程                 

    相关文章

      网友评论

          本文标题:关于处理多进程的僵尸进程的问题

          本文链接:https://www.haomeiwen.com/subject/yybpnctx.html