C'è un modo per mappare un numero di segnale (ad esempio signal.SIGINT) al suo nome rispettivo (ad esempio "SIGINT")?Ottieni i nomi dei segnali dai numeri in Python
mi piacerebbe essere in grado di stampare il nome di un segnale nel registro quando lo ricevo, però non riesco a trovare una mappa da numeri di segnale ai nomi in Python, vale a dire:
import signal
def signal_handler(signum, frame):
logging.debug("Received signal (%s)" % sig_names[signum])
signal.signal(signal.SIGINT, signal_handler)
Per alcuni sig_names del dizionario, in modo che quando il processo riceve SIGINT esso stampa:
Received signal (SIGINT)
A rigor di termini, ciò mapperà 1 a '' SIG_IGN' e SIGHUP' sulla maggior parte delle piattaforme, quindi suppongo che il test dovrebbe essere, se 'v.startswith ('SIG') e non v.startswith ('SIG _') '. –
Inoltre esegue il double mapping 6 su 'SIGABRT' e' SIGIOT' su Mac OS X (sebbene possano essere usati in modo intercambiabile, suppongo, a differenza di 'SIG_IGN' - che non è un segnale). –
@Brian: molto vero ... non è una soluzione perfetta di gran lunga. Ma è almeno in qualche modo indipendente dalla piattaforma. – Wolph