为什么我的程序没有收到SIGTERM?

时间:2012-08-10 07:24:28

标签: ssh telnet sigterm

我在某个服务器上使用telnet / ssh,以运行特定的模拟器progrmam,程序依赖于SIGTERM退出自身(如果不是交互式地输入“exit”字符串)。

当我直接杀死telnet / ssh会话时,程序通常会在大多数服务器上自行退出。但在某些服务器上,我的模拟器不会收到SIGTERM信号,并继续作为ROOT进程的子进程运行。那些悬空的进程将消耗大量的CPU资源。

有人可以给我一些帮助吗?或者如何解决这种情况?

谢谢, 凯文

1 个答案:

答案 0 :(得分:0)

编写一个包装程序

  1. 执行您的模拟器程序
  2. 当模拟器退出时,退出
  3. 当它成为根进程的子进程时,将SIGTERM发送给模拟器​​(如果没有效果,则在几秒钟之后再发送SIGKILL)
  4. 这将是一个糟糕的黑客攻击,但根据您目前提供的信息,这是我能提出的最佳建议。