看起来Python的信号模块没有类似于C语言中signal.h库中的sighold和sigrelse函数。是否有任何Python等效函数呢?
非常感谢!
在关键部分,没有办法暂时“屏蔽”信号(因为并非所有Unix版本都支持此功能)。
Python中没有直接的绑定方法。通过ctypes访问它们非常容易,下面是一个示例。
import ctypes, signal
libc = ctypes.cdll.LoadLibrary("libc.so.6")
libc.sighold(signal.SIGKILL)
libc.sigrelse(signal.SIGKILL)
我不熟悉这些调用的使用,但请注意Python的信号处理程序与C的处理方式不同。当Python代码附加到信号回调时,信号在解释器的C端被捕获并排队。解释器偶尔会因为内部事务(和线程切换等)而被中断。在那个中断期间,Python信号处理程序将被调用。
总之,只需注意Python的信号处理比普通的C信号处理程序略微不同步。