C语言中sighold和sigrelse函数的Python等效项是什么?
时间:2020-03-06 14:31:26 来源:igfitidea点击:
看来,使用signal.h,Python信号模块与C中发现的sighold和sigrelse函数没有任何相似之处。是否有任何类似的Python替代品?
非常感谢!
解决方案
无法暂时性地从关键部分``阻塞''信号(因为并非所有Unix版本都支持此功能)。
https://docs.python.org/library/signal.html
在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信号处理程序少异步一些。