Linux子进程信号

父进程在代码中定义了某些信号的处理,然后 fork() 出子进程后,子进程自然会继承父进程的信号。对于某

个信号的到来,子进程也会做相应的处理。

[python]
#!/usr/bin/python

import os
import sys
import time
import signal

def handler(signum,para):
if signum == signal.SIGINT:
print "Child process %d : Ctrl + C !" %(os.getpid())
sys.exit()

signal.signal(signal.SIGINT, handler)

if __name__ == '__main__':
print "Parent process %d"%(os.getpid())
for i in range(5):
newpid = os.fork()
if newpid == 0:
while True:
print "Child process %d : Hello"%(os.getpid())
time.sleep(1)
else:
pass
os.wait()
[/python]

跑这段程序,然后按下 Ctrl + C,会发现父进程和子进程都接收了信号,并且作出相应的处理。

如何屏蔽子进程对信号的处理呢?在子进程里把从父进程继承下来的信号处理恢复到默认即可。

signal.signal(signal.SIGINT, signal.SIG_DFL)

这样既可!

标签:none

评论已关闭