如何在Linux中判断哪个进程向我的进程发送了信号
我有一个Java应用程序SIG TERM
。我想知道发送此信号的进程的pid。
那可能吗?
回答:
两种Linux专用方法是SA_SIGINFO
和signalfd()
,它们允许程序接收有关已发送信号的 非常
详细的信息,包括发送方的PID。
调用
sigaction()
并传递给它,struct sigaction
其中包含所需的信号处理程序,sa_sigaction
并且设置了SA_SIGINFO
标志sa_flags
。使用此标志,您的信号处理程序将接收 三个 参数,其中一个是siginfo_t
包含发送者的PID和UID的结构。从中调用
signalfd()
和读取signalfd_siginfo
结构(通常以某种选择/轮询循环的形式)。内容将类似于siginfo_t
。
使用哪一个取决于您的应用程序的编写方式。它们可能无法在普通C之外正常工作,而且我也没有希望在Java中使用它们。它们在Linux之外也无法移植。它们也可能是您尝试实现的错误方法。
以上是 如何在Linux中判断哪个进程向我的进程发送了信号 的全部内容, 来源链接: utcz.com/qa/417721.html