Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的Kill进程_Java_Java.lang.class - Fatal编程技术网

Java中的Kill进程

Java中的Kill进程,java,java.lang.class,Java,Java.lang.class,我从Java代码中运行进程,如下所示p=run.exec(“cmd/cstart\”\“c:\”)。在某个时候,我想终止这个过程。在进程上调用destroy()方法会杀死进程,但我想关闭命令行,因为进程仍在运行。当我查看任务管理器时,这个进程没有名字,只有后缀.exe 在任务管理器中,它如下所示: 所以我不能这样做p=run.exec(“taskkill/F/IM.exe”),因为此正在运行的进程没有名称 有没有办法完全关闭cmd并终止这个正在运行的进程?启动进程时,cmd调用可能启动了其他子

我从Java代码中运行进程,如下所示
p=run.exec(“cmd/cstart\”\“c:\”)。在某个时候,我想终止这个过程。在进程上调用
destroy()
方法会杀死进程,但我想关闭命令行,因为进程仍在运行。当我查看任务管理器时,这个进程没有名字,只有后缀
.exe

在任务管理器中,它如下所示:

所以我不能这样做
p=run.exec(“taskkill/F/IM.exe”),因为此正在运行的进程没有名称


有没有办法完全关闭cmd并终止这个正在运行的进程?

启动进程时,cmd调用可能启动了其他子进程。很有可能你的第二个命令行正在杀死其中一个孩子,但不是CMD本身。理想的情况是终止已启动的进程,而不是运行第二个命令行可执行文件终止(可能)其中一个子进程

Process child = run.exec("cmd /c start \"\" C:\\<nameof .cmd file>");
if (timeToKillTheProcess) {
    child.destroy();
    child.waitFor();
}

processchild=run.exec(“cmd/c start\”\“c:\”);
if(完成进程的时间){
child.destroy();
child.waitFor();
}

启动流程时,CMD调用可能启动了其他子流程。很有可能你的第二个命令行正在杀死其中一个孩子,但不是CMD本身。理想的情况是终止已启动的进程,而不是运行第二个命令行可执行文件终止(可能)其中一个子进程

Process child = run.exec("cmd /c start \"\" C:\\<nameof .cmd file>");
if (timeToKillTheProcess) {
    child.destroy();
    child.waitFor();
}

processchild=run.exec(“cmd/c start\”\“c:\”);
if(完成进程的时间){
child.destroy();
child.waitFor();
}

我正在运行的流程是一个Java项目。如何在启动时捕获PID?
Process child=run.exec(“cmd/c start\”\“c:\”
调用cmd。我显然不理解您消息的第一部分。@M.Barabas Ok第三次编辑删除了额外的信息,希望非常清楚。PID存储在
进程
对象中,但如果您使用对象的内置
销毁()
函数。
进程
对象将为您执行正确的
taskkill
。当我在
run.exec
之后立即调用
detroy()
时,进程将立即终止,并且不会运行:(@M.Barabas)我在回答如何销毁它的问题。你必须在你想要销毁它的时候加入一些逻辑来销毁它。我正在运行的进程是一个Java项目。启动时如何捕获PID?
process child=run.exec(“cmd/c start\”\“c:\”
调用cmd。我显然不理解您消息的第一部分。@M.Barabas Ok第三次编辑删除了额外的信息,希望非常清楚。PID存储在
进程
对象中,但如果您使用对象的内置
销毁()
函数。
进程
对象将为您执行正确的
taskkill
。当我在
run.exec
之后立即调用
detroy()
时,进程将立即终止,并且不会运行:(@M.Barabas)我在回答如何摧毁它的问题。你必须在你想要摧毁它的时候用一些逻辑来摧毁它。