2010-05-13 116 views
12

如果我有一個進程接收來自其他進程的信號,有沒有辦法讓我以某種方式告訴哪個進程(如果有的話)發送了一個信號?跟蹤UNIX信號源?

strace讓我跟蹤進程已收到的信號,但不允許我跟蹤誰發佈了它們。

+0

據我所見,目前的解決方案不允許我找出哪個進程殺死/停止另一個進程,如果使用SIGKILL或SIGSTOP。真正? – hagello 2016-11-09 13:27:39

回答

8

不是來自過程之外。信號處理程序的第二個參數是一個siginfo_t結構,其中包含作爲其成員之一的發送進程的PID。有關更多詳細信息,請參閱sigaction(2)

1

Ptrace也可以用來檢測發件人。有一個ptrace(GETSIGINFO)調用,它將使調試器有機會讀取(並可能更改)siginto_t結構。