Linux: как узнать, установлен ли у процесса обработки сигналов сигнал?

Есть процесс счастливого запуска, и мне интересно, установил ли он некоторые обработчики сигналов. Я помню, что однажды я кое-что прочитал об этом, но не смог найти такую ​​информацию. Возможно ли это?

Спасибо

Ответы

Ответ 1

вы можете обнаружить это при проверке файла /proc/PID/status.

Маска SigCgt отображает пойманные сигналы вашим приложением. (см. man 7 signal для объяснений сигмаски)

Ответ 2

Надо любить это - по-видимому, это на самом деле комплекты сигналов...

cat/proc/self/status | grep -i '^ Sig'

SigQ:   0/31404
SigPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000803
SigCgt: 0000000180014664

казалось бы, мог бы сделать утилиту для печати тех, кто не знает об этом уже?

hmmm - время для чтения кода ядра для procfs

из этой замечательной статьи:

http://kernel.org/doc/Documentation/filesystems/proc.txt

SigQ                        number of signals queued/max. number for queue
SigPnd                      bitmap of pending signals for the thread
ShdPnd                      bitmap of shared pending signals for the process
SigBlk                      bitmap of blocked signals
SigIgn                      bitmap of ignored signals
SigCgt                      bitmap of catched signals