import os,signal,time,sys def hand(self,n=0,e=0): print 'in hand' signal.signal(signal.SIGCHLD,hand) signal.signal(signal.SIGCHLD,hand) father = os.fork() if father: time.sleep(5) pid = os.fork() if pid: print 'child parent' else: print 'child child' sys.exit(2) else: print 'oke' print 'wewe'
经过测试。证明 signal 信号时共享的。所以也很好理解在信号回调函数里面继续重复申请信号
def hand(self,n=0,e=0):
print 'in hand'
signal.signal(signal.SIGCHLD,hand)
这样做,据书上说是为了兼容某些unix 平台在多进程下,信号执行过一次后就失效的问题。
本文探讨了在Python多进程环境下信号回调函数的使用及信号执行问题,通过实例展示了如何解决信号执行过一次后失效的问题,并解释了信号共享的概念。
253

被折叠的 条评论
为什么被折叠?



