gpt4 book ai didi

java - 任何支持 Process.supportsNormalTermination==true 的虚拟机?

转载 作者:搜寻专家 更新时间:2023-10-31 20:08:45 25 4
gpt4 key购买 nike

Java 9 的一个新特性是它不仅可以强制终止它创建的进程(在 SIGKILL 的含义中)而且它还可能支持发送一个 SIGTERM(在 Java 中称为“正常终止”)。

根据 Process 的文档可以查询实现是否支持这一点:

public boolean supportsNormalTermination​() Returns true if the implementation of destroy() is to normally terminate the process, Returns false if the implementation of destroy forcibly and immediately terminates the process. Invoking this method on Process objects returned by ProcessBuilder.start() and Runtime.exec(java.lang.String) return true or false depending on the platform implementation.

我使用 Oracle JRE 9.0.1(Windows 64 位)进行了一些测试:

Process p = Runtime.getRuntime().exec("javaw -cp target/classes TestClassWait10Minutes");
p.waitFor(5, TimeUnit.SECONDS);
System.out.println(p.supportsNormalTermination());

但是,Oracle JRE 似乎不支持“正常终止”,因为我总是得到 false

因为它依赖于“平台实现”,Java 9 似乎定义了它但没有实现它。

有人知道“正常终止”功能是否可以在任何可用的 Java VM 中使用吗?

最佳答案

在Linux实现上,似乎支持正常终止。来自source of ProcessImpl :

// Linux platforms support a normal (non-forcible) kill signal.
static final boolean SUPPORTS_NORMAL_TERMINATION = true;

...

@Override

public boolean supportsNormalTermination() {
return ProcessImpl.SUPPORTS_NORMAL_TERMINATION;
}

Windows 上并非如此.

关于java - 任何支持 Process.supportsNormalTermination==true 的虚拟机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47266886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com