似乎Python信号模块没有任何类似于C中使用signal.h的sighrel和sigrelse函数。是否存在Python等效的任何排序?
非常感谢!
答案 0 :(得分:2)
没有办法暂时从关键部分“阻止”信号(因为所有Unix版本都不支持这种信号)。
答案 1 :(得分:2)
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信号处理程序的异步性稍差。