在通过 java 运行和终止进程时,我遇到了一个奇怪的问题。
基本上,我有一种方法可以使用 taskkill 杀死一个进程:
private static void kill() {
try {
Runtime.getRuntime().exec("taskkill /F /IM app.exe");
} catch (IOException e) {
e.printStackTrace();
}
}
我调用这个方法是为了确保在我开始一个新进程之前所有进程都被杀死:
kill();
ProcessBuilder procBuilder = new ProcessBuilder(args);
try {
Process p = procBuilder.start();
} catch (Exception e) {
e.printStackTrace();
}
问题是启动的进程似乎被taskkil杀死了。没有杀戮的召唤,它工作得很好;使用 kill 时,进程启动但 GUI 不出现。
这是两个电话之间的优先级问题吗?( runtime.exec 的优先级低于 ProcessBuilder.start ?)。
我已经解决了在 Runtime exec 返回时使用 waitFor 的问题,但我很好奇为什么会出现这个问题。