Если у меня есть процесс, который получает сигналы от других процессов, могу ли я как-то сказать, какой процесс (если есть) отправил сигнал?
strace позволяет мне отследить, какие сигналы получил процесс, но не позволяет отследить, кто их выдал.
strace
Не извне процесса. Вторым аргументом обработчику сигнала является структура siginfo_t, которая содержит PID процесса отправки в качестве одного из его членов. Подробнее см. sigaction(2).
siginfo_t
sigaction(2)
Ptrace также может использоваться для обнаружения отправителя.Существует вызов ptrace(GETSIGINFO), который даст отладчику возможность прочитать (и, возможно, изменить) siginto_t struct.
Ptrace
ptrace(GETSIGINFO)
siginto_t