Linux:从kill命令获取退出代码

Rox*_*Rox 9 linux kill exit-code sigterm

如果我SIGTERM使用该kill命令向进程发送信号,我期望退出代码,但在终止进程后运行以下命令时总是得到0(零):

echo $?
Run Code Online (Sandbox Code Playgroud)

根据这篇文章中的答案,我在发送SIGTERM一个进程时应该得到143 :始终应用Java结束"退出143"Ubuntu

但我没有得到退出代码.为什么?

Fre*_*Foo 11

您获得的退出代码是kill命令本身.0表示它成功,即另一个进程得到您发送的信号.kill只是不报告进程的退出状态,因为它甚至不能确定其发送的信号导致其他进程退出.

  • 可以检查被杀死进程的退出代码.在发送信号之前使用ptrace连接到它.(这可能比它的价值更麻烦!)或者,让被杀死进程的父进程报告其退出状态. (2认同)
  • @Sathors 谢谢。大多数手册页没有提到它,但似乎至少有一些(http://man7.org/linux/man-pages/man1/kill.1.html)。上帝知道后者是否适用于在他们的人中没有提到的所有系统。总有一天我会明白为什么同一个命令有 19 个不同的手册页(我猜它们与不同的发行版有关,但仍然如此)...... (2认同)