我从我的 Java 代码运行进程,如下所示 p = run.exec("cmd /c start \"\" C:\\<nameof .cmd file>");
。在某些时候,我想终止这个进程。调用destroy()
进程上的方法杀死进程,但我想关闭命令行,其中 procces 仍在运行。当我查看任务管理器时,这个进程没有名称,它只有后缀 .exe
.
所以我不能这样做p = run.exec("taskkill /F /IM <nameofexe>.exe");
,因为这个正在运行的进程没有名称。
有没有办法,如何完全关闭cmd并杀死这个正在运行的进程?
最佳答案
当您启动进程时,CMD 调用可能启动了其他子进程。您的第二个命令行很有可能会杀死其中一个 child ,但不会杀死 CMD 本身。理想的情况是终止已启动的进程,而不是运行第二个命令行可执行文件来终止(可能)其中一个子进程。
Process child = run.exec("cmd /c start \"\" C:\\<nameof .cmd file>");
if (timeToKillTheProcess) {
child.destroy();
child.waitFor();
}
关于java - Java中杀死进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47581937/