Python中类似于C语言中的sighold和sigrelse函数的等效函数是什么?

3

看起来Python的信号模块没有类似于C语言中signal.h库中的sighold和sigrelse函数。是否有任何Python等效函数呢?

非常感谢!

2个回答

2

你可以尝试处理所有信号(并且你可以覆盖一些信号)。但是你必须为本地处理的信号安装处理程序,并在每个关键部分之前和之后卸载它们。 - Chris
还有一种类似于SWIG的东西,你可以从Python中直接调用本地库来执行代码。 - Chris

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信号处理程序略微不同步。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接