2010-05-13 7 views
12

Если у меня есть процесс, который получает сигналы от других процессов, есть ли способ для меня каким-то образом сказать, какой процесс (если есть) отправил сигнал?Отслеживание истоков сигнала UNIX?

strace позволяет мне отслеживать, что сигнализирует о процессе, но не позволяет мне отслеживать, кто их выдал.

+0

Насколько я вижу, текущие решения не позволяют мне узнать, какой процесс убил/остановил другой процесс, если использовался SIGKILL или SIGSTOP. Правда? – hagello

ответ

8

Не вне процесса. Второй аргумент для обработчика сигналов - это структура siginfo_t, которая содержит PID процесса отправки в качестве одного из его членов. См. sigaction(2) для более подробной информации.

1

Ptrace может использоваться для обнаружения отправителя. Существует вызов ptrace(GETSIGINFO), который даст отладчику возможность прочитать (и, возможно, изменить) siginto_t struct.

Смежные вопросы