gpt4 book ai didi

Java:杀死 unix 上的所有子进程

转载 作者:行者123 更新时间:2023-11-30 04:49:53 28 4
gpt4 key购买 nike

我有一个用 java 编写的应用程序,它在 Unix 上运行,并在启动时启动两个子进程(通过 Runtime.getRuntime().exec())。如果应用程序由于某种原因崩溃,子进程不会被终止。

现在,我添加了一个关闭钩子(Hook),每次崩溃时都会触发该钩子(Hook),到目前为止还可以。但我想在 UNIX 控制台上为应用程序的每个子进程发送 SIGTERM 信号(或至少 SIGINT)。我应该能够通过 ps 找到它们的进程 ID,但我没有正确提取 PID 并为每个进程发送信号。

有人可以帮忙吗?

非常感谢!

最佳答案

我建议的不是官方功能,而是一种技巧。

这就是我获取 java 应用程序进程 ID 的方法。我从来没有找到其他方法。

public static final String getPid() {
try {
RuntimeMXBean runtimeBean = ManagementFactory.getRuntimeMXBean();
String name = runtimeBean.getName();
int k = name.indexOf('@');
if (k > 0)
return name.substring(0, k);
} catch (Exception ex) {
}
return null;
}

这适用于 win、mac 和 Linux。

关于Java:杀死 unix 上的所有子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10052383/

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