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 ...'
12500开始等待...... [12501,12502]
当我使用'kill -USR2 12501'时,我得到了'onsig2-> 12'并且两个子进程都处于活动状态。我理解这一点
但是当我使用'kill -USR1 12500'时,我得到'onsig1-> 10',但是父进程将会死亡。
我不明白为什么。
答案 0 :(得分:0)
对不起,我忘记了在尝试阻止时进入
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)