如何捕获/拦截从我自己的进程发送到另一个进程的信号?愿意使用C,Ruby或任何Linux软件包。
答案 0 :(得分:3)
您可以编写一个库包装器来替换系统signal / sigaction调用来拦截信号处理程序的设置并设置您自己的处理程序。收到信号后,您可以完成工作并稍后调用用户处理程序。使用LD_PRELOAD替换系统signal
/ sigaction
例程。
答案 1 :(得分:1)
我认为ptrace(2)
系统调用是你想要的。从手册:“在被追踪时,即使信号被忽略,孩子也会在每次信号传递时停止。(例外情况是SIGKILL,它具有通常的效果。)父母将在下次等待时得到通知(2)并且可以在停止时检查和修改子进程。然后父母让孩子继续,可选地忽略传递的信号(或者甚至提供不同的信号)。“