在C中找到的sighrel和sigrelse函数的Python等价物是什么?

时间:2008-09-22 04:25:23

标签: python signals

似乎Python信号模块没有任何类似于C中使用signal.h的sighrel和sigrelse函数。是否存在Python等效的任何排序?

非常感谢!

2 个答案:

答案 0 :(得分:2)

没有办法暂时从关键部分“阻止”信号(因为所有Unix版本都不支持这种信号)。

https://docs.python.org/library/signal.html

答案 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信号处理程序的异步性稍差。