3

看来 Python 信号模块没有任何类似于 C 中使用 signal.h 的 sighold 和 sigrelse 函数的东西。是否有任何类型的 Python 等价物?

非常感谢!

4

2 回答 2

2

没有办法暂时“阻止”来自关键部分的信号(因为并非所有 Unix 风格都支持这一点)。

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

于 2008-09-22T04:36:29.190 回答
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 信号处理程序少一点异步性。

于 2008-09-22T04:47:24.980 回答