1

我像这样从我的 Java 代码运行进程p = run.exec("cmd /c start \"\" C:\\<nameof .cmd file>");。在某些时候,我想终止这个进程。在进程上调用destroy()方法会杀死进程,但我想关闭命令行,其中 procces 仍在运行。当我查看任务管理器时,这个进程没有名称,它只有 postfix .exe

在任务管理器中,它看起来像这样: 在此处输入图像描述

所以我不能这样做p = run.exec("taskkill /F /IM <nameofexe>.exe");,因为这个正在运行的进程没有名字。

有没有办法,如何完全关闭 cmd 并杀死这个正在运行的进程?

4

1 回答 1

0

当你启动你的进程时,CMD 调用可能已经启动了额外的子进程。您的第二个命令行很可能会杀死其中一个孩子,但不会杀死 CMD 本身。理想的情况是杀死启动的进程,而不是运行第二个命令行可执行文件来杀死(可能)其中一个子进程。

Process child = run.exec("cmd /c start \"\" C:\\<nameof .cmd file>");
if (timeToKillTheProcess) {
    child.destroy();
    child.waitFor();
}
于 2017-11-30T20:38:40.717 回答