Получите имена сигнала от чисел в Python

Есть ли способ отобразить число сигнала (например, сигнал. SIGINT) к его соответствующему имени (т.е. "SIGINT")?

Я хотел бы смочь распечатать название сигнала в журнале, когда я получаю его, однако я не могу найти карту от чисел сигнала до имен в Python, т.е.:

import signal
def signal_handler(signum, frame):
    logging.debug("Received signal (%s)" % sig_names[signum])

signal.signal(signal.SIGINT, signal_handler)

Для некоторого словаря sig_names, поэтому когда процесс получает SIGINT, он печатает:

Received signal (SIGINT)
47
задан tshepang 8 August 2014 в 13:05
поделиться

2 ответа

Ее нет, но если вы не против небольшого хака, вы можете создать ее следующим образом:

import signal
dict((k, v) for v, k in reversed(sorted(signal.__dict__.items()))
     if v.startswith('SIG') and not v.startswith('SIG_'))
34
ответ дан 26 November 2019 в 19:27
поделиться

Ну, help(signal) говорит внизу:

DATA
    NSIG = 23
    SIGABRT = 22
    SIGBREAK = 21
    SIGFPE = 8
    SIGILL = 4
    SIGINT = 2
    SIGSEGV = 11
    SIGTERM = 15
    SIG_DFL = 0
    SIG_IGN = 1

Так что это должно работать:

sig_names = {23:"NSIG", 22:"SIGABRT", 21:"SIGBREAK", 8:"SIGFPE", 4:"SIGILL",
             2:"SIGINT", 11:"SIGSEGV", 15:"SIGTERM", 0:"SIG_DFL", 1:"SIG_IGN"}
1
ответ дан 26 November 2019 в 19:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: