Java:如何仅处理SIGTERM信号?

3
有没有一种方法在Java中处理接收到的SIGTERM信号?
我正在运行一个Java服务,但不想在用户注销时关闭它。
希望只覆盖sigterm关闭处理程序,但保留其他信号的处理程序。
详情请见:信号详细信息这个问题的一个小变化

1
你链接的解释中有哪些部分是你不理解的? - Brian Roach
我很困惑 - 为什么当用户注销时服务会停止运行?理想情况下,您的服务应该能够满足多个用户的多个请求,不是吗? - lobster1234
2
请提供一个 SSCCE 的代码示例,解释您的代码运行环境,并描述您的代码无法按照预期工作的情况。 - Lesmana
我正在使用http://jslwin.sourceforge.net/将我的程序作为Windows XP服务运行。它应该在用户登录或注销时继续运行。但是当关闭计算机时,服务也应该关闭。目前,当用户注销时,服务会退出(不希望的行为)。因此,我想覆盖Sigterm的处理方式,但保留原始JVM处理程序的其余部分。 - zeroin23
1个回答

3
如果传递给handleSignal名称为"TERM",则执行某些操作,否则忽略它。
class MySignalHandler implements SignalHandler {
  public void handle(Signal sig) {
    if (!"TERM".equals(sig.getName())) {
      SigHandler.SIG_DFL.handle(sig);
      return;
    }

    // Handling code goes here.
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接