第十章:使用进程、线程和协程提供并发性-signal:异步系统事件-获取已注册的处理器

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)

同样,由于每个操作系统可能定义了不同的信号,所以其他系统上的输出可能有所不同。
运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43193719/article/details/89500313