Có cách nào để ánh xạ một số tín hiệu (ví dụ: signal.SIGINT) với tên tương ứng của nó (ví dụ: "SIGINT") không?Nhận tên tín hiệu từ các số trong Python
Tôi muốn để có thể in tên của một tín hiệu trong nhật ký khi tôi nhận được nó, tuy nhiên tôi không thể tìm thấy một bản đồ từ số tín hiệu để tên bằng Python, ví dụ:
import signal
def signal_handler(signum, frame):
logging.debug("Received signal (%s)" % sig_names[signum])
signal.signal(signal.SIGINT, signal_handler)
Đối một số sig_names từ điển, vì vậy khi quá trình nhận SIGINT nó in:
Received signal (SIGINT)
Nói đúng ra này sẽ lập bản đồ 1 cho 'SIG_IGN' và 'SIGHUP' trên hầu hết các nền tảng, vì vậy tôi cho rằng bài kiểm tra nên nếu' v.startswith ('SIG') và không v.startswith ('SIG _') '. –
Nó cũng đôi bản đồ 6 đến 'SIGABRT' và' SIGIOT' trên Mac OS X (mặc dù chúng có thể được sử dụng thay thế cho nhau, tôi giả sử, không giống 'SIG_IGN' - không phải là tín hiệu). –
@Brian: rất đúng ... nó không phải là một giải pháp hoàn hảo cho đến nay. Nhưng nó hơi độc lập với nền tảng. – Wolph