在 Java 虚拟机中处理信号

问题描述 投票:0回答:3

是否可以在 Java 虚拟机中处理 POSIX 信号?

至少 SIGINTSIGKILL 应该完全独立于平台。

java jvm process posix signals
3个回答
14
投票

JVM 自行响应信号。有些会导致 JVM 正常关闭,其中包括运行关闭挂钩。其他信号将导致 JVM 中止而不运行关闭挂钩。

使用 Runtime.addShutdownHook(Thread) 添加关闭钩子。

我不认为 JDK 提供了在 Java 应用程序中处理信号的官方方法。但是,我确实找到了这篇 IBM 文章,其中描述了使用一些未记录的

sun.misc.Signal
类来完成此操作。该文章的日期为 2002 年,使用的是 JDK 1.3.1,但我已经确认
sun.misc.Signal
类仍然存在于 JDK 1.6.0 中。


4
投票

0
投票

这篇文章描述了Oracle HotSpot VM如何在内部使用信号,并描述了添加自定义信号处理程序(信号链)的方法。这无法使用 Java 语言来完成,但需要自己的本机库来挂钩 JVM。

© www.soinside.com 2019 - 2024. All rights reserved.