首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >追踪UNIX信号来源?

追踪UNIX信号来源?
EN

Stack Overflow用户
提问于 2010-05-13 23:11:29
回答 3查看 3.5K关注 0票数 12

如果我有一个从其他进程接收信号的进程,有没有办法让我以某种方式告诉哪个进程(如果有的话)发送了信号?

strace允许我跟踪进程接收到的信号,但不允许我跟踪发出这些信号的人。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-16 12:30:54

Ptrace也可以用来检测发送者。有一个ptrace(GETSIGINFO)调用,它将为调试器提供读取(并可能更改) siginto_t结构的机会。

票数 2
EN

Stack Overflow用户

发布于 2010-05-13 23:28:22

不是来自进程之外的。信号处理程序的第二个参数是一个siginfo_t结构,其中包含发送进程的PID作为其成员之一。有关更多详细信息,请参阅sigaction(2)

票数 9
EN

Stack Overflow用户

发布于 2020-05-29 15:09:30

对于Linux用户来说,有一种非常简单的方法来识别信号源。例如,下面是为了找出哪个任务将SIGKILL发送给其他任务。

代码语言:javascript
复制
cd /sys/kernel/debug/tracing
echo 'sig==9' > events/signal/signal_generate/filter 
echo 1 > events/signal/signal_generate/enable
: > trace
echo 1 > tracing_on
tail -f trace

例如,当我使用'pkill -9 sleep‘时。

代码语言:javascript
复制
# cat trace
[...]
       pkill-2982  [001] d... 750347.835838: signal_generate: sig=9 errno=0 code=0 comm=sleep pid=2981 grp=1 res=0

如果没有上面的'sig==9‘过滤器,'trace’将显示任务间发送的所有信号。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2827877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档