【问题标题】:Java: How to handle a SIGTERM only?Java:如何仅处理 SIGTERM?
【发布时间】:2011-08-16 08:19:57
【问题描述】:

Java 中有没有办法处理收到的 SIGTERM?

我正在运行 java 服务,但不想在用户注销时关闭我的 java 服务。

只想覆盖 sigterm 关闭处理程序,但保留其余信号的处理程序。

details of signals
a slight variation of this qns

【问题讨论】:

  • 您链接的解释中有哪些部分您不明白?
  • 我很困惑——为什么用户注销时服务会死掉?理想情况下,您的服务应该满足来自多个用户的多个请求,不是吗?
  • 请发布您的代码SSCCE,说明您的代码运行的环境,并描述您的代码未按预期运行的情况。
  • 我正在使用jslwin.sourceforge.net 将我的程序作为 Windows XP 服务运行。即使用户登录或注销,它也应该继续运行。但是当初始化关闭时,服务也应该关闭。当前,当用户注销时,服务将退出(不需要的行为)。所以我想覆盖 Sigterm 的处理,但保留原始 JVM 处理程序的其余部分。

标签: java exit sigterm


【解决方案1】:

如果传递给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.
  }
}

【讨论】:

    猜你喜欢
    • 2011-02-27
    • 1970-01-01
    • 2016-11-09
    • 2021-09-23
    • 2023-04-02
    • 2015-08-11
    • 1970-01-01
    • 2016-01-20
    相关资源
    最近更新 更多