gpt4 book ai didi

java - java中如何杀死多个进程?

转载 作者:行者123 更新时间:2023-11-30 06:07:02 25 4
gpt4 key购买 nike

我想创建一些进程,然后一个又一个地终止(每次终止前等待 2 秒)。结果,3个窗口应该按顺序出现然后消失。问题只是第一个进程被杀死了。

 public static void main(String[] args) {
try {
Process p1 = Runtime.getRuntime().exec("notepad.exe");
Process p2 = Runtime.getRuntime().exec("calc.exe");
Process p3 = Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c", "start", "dir"});
Thread.sleep(2000);
// p1.waitFor(2, TimeUnit.SECONDS);
p1.destroy();
Thread.sleep(2000);
// p2.waitFor(2, TimeUnit.SECONDS);
p2.destroy();
Thread.sleep(2000);
// p3.waitFor(2, TimeUnit.SECONDS);
p3.destroy();
} catch (Exception ex) {
System.out.println("" + ex);
}
}

最佳答案

如果您使用Java 9,则可以使用 ProcessHandledestroyForcibibly()方法与 kill -9 几乎相同,但从 Java 8 开始,您可以在 Process 上使用 destroyForcously() > 对象。

@编辑

只有 calc.exe 和 cmd.exe 有问题,所以让我们看看 calc.exe 进程。

当您运行 calc.exe 时,calc.exe 启动 C:\Program Files\WindowsApps\Microsoft.WindowsCalculator_10.1804.911.0_x64__8wekyb3d8bbwe

所以这些进程是不同的。Calc.exe 使用其他 PID 启动另一个进程。

做什么?

Java 9上,您可以使用ProcessHandle类来查找从此目录运行的进程,获取PID并杀死:

我得到:可选[C:\Program Files\WindowsApps\Microsoft.WindowsCalculator_10.1804.911.0_x64__8wekyb3d8bbwe\Calculator.exe]

要获取我们的进程,您可以在启动 calc.exe 之前获取进程的快照,并与运行 calc.exe 后的快照进行比较。但这并不能 100% 确定您只得到一个计算器.exe。

可以这样,用户和你的App同时启动calc.exe。所以你会得到两个 Calc.exe 进程,一个由你启动,一个由应用程序启动。

关于java - java中如何杀死多个进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51088442/

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