2010-05-13 14 views
12

Se ho un processo che riceve segnali da altri processi, c'è un modo per me di dire in qualche modo quale processo (se esiste) ha inviato un segnale?Traccia origini segnale UNIX?

strace mi consente di rintracciare quali segnali ha ricevuto un processo, ma non mi consente di rintracciare chi li ha emessi.

+0

Per quanto posso vedere, le soluzioni attuali non mi consentono di scoprire quale processo ha ucciso/fermato un altro processo se SIGKILL o SIGSTOP sono stati utilizzati. Vero? – hagello

risposta

8

Non proveniente dall'esterno del processo. Il secondo argomento del gestore di segnale è una struttura siginfo_t che contiene il PID del processo di invio come uno dei suoi membri. Vedi sigaction(2) per maggiori dettagli.

1

Ptrace può essere utilizzato anche per rilevare il mittente. Esiste una chiamata ptrace(GETSIGINFO), che darà a un debugger la possibilità di leggere (e, eventualmente, modificare) la struttura siginto_t.