我有一个java应用程序SIG TERM
。我想知道发送这个信号的进程的pid。
那可能吗?
两种 Linux 特定的方法是SA_SIGINFO http://www.kernel.org/doc/man-pages/online/pages/man2/sigaction.2.html and signalfd() http://www.kernel.org/doc/man-pages/online/pages/man2/signalfd.2.html,它允许程序接收very有关发送信号的详细信息,包括发送者的 PID。
Call sigaction() http://www.kernel.org/doc/man-pages/online/pages/man2/sigaction.2.html并传递给它一个struct sigaction
其中有所需的信号处理程序sa_sigaction
和SA_SIGINFO
标记在sa_flags
放。有了这个标志,你的信号处理程序将收到three参数,其中之一是siginfo_t
包含发送者的 PID 和 UID 的结构。
Call signalfd() http://www.kernel.org/doc/man-pages/online/pages/man2/signalfd.2.html并阅读signalfd_siginfo
来自它的结构(通常在某种选择/轮询循环中)。内容将类似于siginfo_t
.
使用哪一种取决于您的应用程序的编写方式;它们在普通 C 之外可能无法正常工作,而且我也不希望它们在 Java 中工作。它们也无法在 Linux 之外移植。它们也可能是实现您想要实现的目标的非常错误的方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)