Python 2.7 如何在python中处理SIGUSR1

Python 2.7 如何在python中处理SIGUSR1,python-2.7,signals,Python 2.7,Signals,12500开始等待。。。[1250112502] 当我使用'kill-usr212501'时,我得到了'onsig2->12',两个子进程是活动的。我明白这一点。 但是当我使用“kill-usr112500”时,我得到了“onsig1->10”,但是父进程将死亡。 我不明白为什么。对不起,我忘了将try块包装到while中 import os import signal from time import sleep child=[] for i in range(2):

12500开始等待。。。[1250112502]
当我使用'kill-usr212501'时,我得到了'onsig2->12',两个子进程是活动的。我明白这一点。
但是当我使用“kill-usr112500”时,我得到了“onsig1->10”,但是父进程将死亡。

我不明白为什么。

对不起,我忘了将try块包装到while中

import os  
import signal  
from time import sleep  

child=[]

for i in range(2):
    pid = os.fork()
    if pid == 0:
        child=[]
        print 'child start,pid',os.getpid()
        break
    else:
        child.append(pid)

if(child):
    def onsig1(a,b):
        print 'onsig1->',a

    signal.signal(signal.SIGCHLD,onsig1)
    signal.signal(signal.SIGUSR1,onsig1)

    try:
        print os.getpid(),' start wait...',str(child)
        while True:
            pid, stat = os.wait()
            print '--->',pid,stat
    except Exception as e:
        print 'error -->',str(e)
else:
    def onsig2(a,b):
        print 'onsig2->',a
    signal.signal(signal.SIGUSR2,onsig2)
    while True:
        sleep(10)
        print os.getpid(),'say ...'

你有没有从
错误-->
得到过输出?@MisterMiyagi在'kill-USR1 12500'时得到了“错误-->[Errno 4]中断的系统调用”
while True:
    try:
        print os.getpid(),' start wait...',str(child)
        while True:
            pid, stat = os.wait()
            print '--->',pid,stat
    except Exception as e:
        print 'error -->',str(e)