【代码】signal 父子进程通信

本文探讨了使用fork创建子进程时,如何通过signal进行父子进程间的通信。介绍了CTRL+Z退出子进程后,父进程需要第二次CTRL+Z才能退出的情况,并指出设置s.signal(s.SIGCLD, s.SIG_IGN)的疑惑,以及当设置为s.SIG_DFL时,导致子进程和父进程无法正常退出的问题,需要借助kill强制结束。" 108552759,7520589,Selenium WebDriver高级操作指南,"['自动化测试', 'Selenium', 'Web测试', 'WebDriver', '前端测试']
摘要由CSDN通过智能技术生成

这里使用fork方法,当然也可以使用Process创建子进程,此时join就可以保证,父进程随子进程退出而退出,但没有测试

在这里插入图片描述
第一个CTRL+Z退出子进程,需要第二次CTRL+Z退出父进程,且退出方式都是sys.exit方法
存在以下问题:s.signal(s.SIGCLD, s.SIG_IGN)这句作用不理解,设置成s.SIG_DFL则使得子进程和父进程都无法退出,只能kill

#!/usr/bin/python3

import time
import os
from os import kill
import sys
import signal as s
from multiprocessing import Process, Value, Array, Event

def seller_handle(signum, frame):
    if signum==s.SIGINT:
        print('CTRL C',int(signum))
        kill(os.getppid(),s.SIGUSR1)
    elif signum==s.SIGQUIT:
        print('CTRL \\' ,int(signum))
        kill(os.getppid(),s.SIGUSR2)
    elif signum==s.SIGUSR1:
        sys.exit('arrived')
def driver_handle(signum, frame):
    if signum==s.SIGTSTP:
        print('CTRL Z'  ,int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值