Frage

Es erscheint das Python-Signal-Modul hat nichts ähnlich den sighold und sigrelse Funktionen in C, mit signal.h. Gibt es Python Äquivalente von jeder sortieren?

Vielen Dank!

War es hilfreich?

Lösung

Es gibt keine direkten Bindungen für diese in Python. sie durch ctypes Zugriff ist einfach genug; hier ist ein Beispiel.

import ctypes, signal
libc = ctypes.cdll.LoadLibrary("libc.so.6")
libc.sighold(signal.SIGKILL)
libc.sigrelse(signal.SIGKILL)

Ich bin nicht vertraut mit der Verwendung dieser Anrufe, aber bewusst sein, dass Pythons Signal-Handler als C. anders funktionieren Wenn Python-Code auf ein Signal Rückruf angeschlossen ist, wird das Signal auf der C-Seite des Interpreters gefangen wird und in der Warteschlange . Der Interpreter ist für die interne housekeeping (und Fadenschalt usw.) gelegentlich unterbrochen. Es ist während der den Python-Handler für das Signal Interrupt aufgerufen.

Alles zu sagen, nur bewusst sein, dass Pythons Signalverarbeitung etwas weniger asynchron als normaler C-Signal-Handler ist.

Andere Tipps

Es gibt keine Möglichkeit zu `` Block ‚‘ Signale vorübergehend von kritischen Abschnitten (da dies nicht von allen Unix-Varianten unterstützt).

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top