C の sighold 関数と sigrelse 関数に相当する Python 関数は何ですか?
質問
Python シグナル モジュールには、signal.h を使用する C の sighold および 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 フレーバーでサポートされているわけではないため)。
所属していません StackOverflow