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

非常感谢!

有帮助吗?

解决方案

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

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top