Java中sun.misc.Signal可用信号及对应整数值技术咨询
Java中
sun.misc.Signal支持的信号名称及对应值 sun.misc.Signal是Java的内部非公开API,其支持的信号完全依赖底层JVM和操作系统的实现,不同厂商(Oracle/OpenJDK、IBM等)、不同操作系统(Unix/Linux、macOS、Windows)的支持范围和对应数值会有差异,因为它直接调用JVM的本地代码实现信号映射。
一、Oracle/OpenJDK(Unix/Linux、macOS)
这类JDK的信号基本和系统原生信号一一对应,常见可使用的信号及对应数值如下:
HUP:1INT:2(通常由Ctrl+C触发)QUIT:3ILL:4TRAP:5ABRT:6BUS:7FPE:8USR1:10SEGV:11USR2:12PIPE:13ALRM:14TERM:15(默认进程终止信号)CHLD:17CONT:18TSTP:20TTIN:21TTOU:22
注意:KILL(9)、STOP(19)这类系统强制终止/暂停信号无法被Java程序通过sun.misc.Signal捕获。Windows系统下Oracle/OpenJDK支持的信号非常有限,仅INT、TERM等少数信号可用,且数值与Unix系统不同。
二、IBM JDK
IBM JDK的信号支持结合了系统原生信号和JVM自身扩展,基础信号(如HUP、INT、QUIT等)的数值和Unix系统一致,同时还有部分针对IBM JVM调试、监控的特有信号,具体支持范围需参考对应版本的IBM JVM文档。
重要提示
sun.misc.Signal从Java 9开始已被标记为废弃,官方不推荐使用,建议替代方案:- 处理外部进程信号用
java.lang.ProcessHandle - 自定义进程内信号逻辑可通过应用级别的事件机制实现
- 处理外部进程信号用
- 不要硬编码信号数值,实际使用时可通过
Signal.getNumber(String signalName)方法动态获取对应系统下的数值,避免跨平台兼容问题。
内容的提问来源于stack exchange,提问作者Ismail Yavuz
相关产品推荐
相关产品推荐

