10.2.2 获取已注册的处理器
要查看为一个信号注册了哪些信号处理器,可以使用getsignal()。要将信号编号作为参数传入。返回值是已注册的处理器,或者是以下某个特殊值:SIG_IGN(如果信号被忽略)、SIG_DFL(如果使用默认行为)或None(如果从C而非从Python注册现有信号处理器)。
import signal
def alarm_received(n,stack):
return
signal.signal(signal.SIGALRM,alarm_received)
signals_to_names = {
getattr(signal,n):n
for n in dir(signal)
if n.startswith('SIG') and '_' not in n
}
for s,name in sorted(signals_to_names.items()):
handler = signal.getsignal(s)
if handler is signal.SIG_DFL:
handler = 'SIG_DFL'
elif handler is signal.SIG_IGN:
handler = 'SIG_IGN'
print('{:<10} ({:2d}):'.format(name,s),handler)
同样,由于每个操作系统可能定义了不同的信号,所以其他系统上的输出可能有所不同。
运行结果: