Quali sono gli equivalenti Python delle funzioni sospiro e sigrelse trovati in C?

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

  •  02-07-2019
  •  | 
  •  

Domanda

Sembra che il modulo del segnale Python non abbia nulla di simile alle funzioni Sighold e Sigrelse trovate in C, usando signal.h. Esistono equivalenti Python di qualsiasi ordinamento?

Mille grazie!

È stato utile?

Soluzione

Non ci sono associazioni dirette per questo in Python. Accedervi attraverso i tipi è abbastanza facile; ecco un esempio.

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

Non ho familiarità con l'uso di queste chiamate, ma sappiate che i gestori di segnale di Python funzionano in modo diverso rispetto a C. Quando il codice Python è collegato a una richiamata del segnale, il segnale viene catturato sul lato C dell'interprete e messo in coda . L'interprete viene occasionalmente interrotto per le pulizie interne (e cambio di filo, ecc.). È durante quell'interruzione che verrà chiamato il gestore Python per il segnale.

Tutto ciò da dire, basta essere consapevoli del fatto che la gestione del segnale di Python è un po 'meno asincrona rispetto ai normali gestori di segnali C.

Altri suggerimenti

Non c'è modo di `` bloccare '' temporaneamente i segnali da sezioni critiche (poiché questo non è supportato da tutte le versioni di Unix).

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top