Quels sont les équivalents en python des fonctions sighold et sigrelse trouvées en C?

StackOverflow https://stackoverflow.com/questions/113170

  •  02-07-2019
  •  | 
  •  

Question

Il semble que le module de signaux Python n’ait rien de semblable aux fonctions sighold et sigrelse trouvées en C, qui utilisent signal.h. Existe-t-il des équivalents Python de type quelconque ?

Merci beaucoup!

Était-ce utile?

La solution

Il n’existe aucune liaison directe pour cela en Python. Il est assez facile d'y accéder par le biais de types. voici un exemple.

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

Je ne suis pas familier avec l'utilisation de ces appels, mais sachez que les gestionnaires de signaux de Python fonctionnent différemment de C. Lorsque le code Python est associé à un rappel de signal, le signal est capturé du côté C de l'interpréteur et mis en file d'attente. . L'interprète est parfois interrompu pour des tâches internes de maintenance (et de commutation de threads, etc.). C’est pendant cette interruption que le gestionnaire Python du signal sera appelé.

Tout cela pour dire, sachez simplement que la gestion du signal de Python est un peu moins asynchrone que les gestionnaires de signal C normaux.

Autres conseils

Il n’existe aucun moyen de "bloquer" les signaux des sections critiques (ceci n’est pas supporté par toutes les versions Unix).

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top