当exec bat但不是exe时,为什么Process destroy不起作用

时间:2014-06-26 06:44:55

标签: java batch-file process exe destroy

Process p = Runtime.getRuntime().exec(new String[] { "C:/work/bat/ConsoleApplication1.exe" });
Thread.sleep(4000);
p.destroy();
int res = p.waitFor();
System.out.println("res" + res);

这将打印res1,JVM将一次停止,但如果是这样的话:

Process p = Runtime.getRuntime().exec(new String[] { "C:/work/bat/exe.bat" });

4s 之后,这也将打印res1,但JVM不会一次停止。 JVM将在更多 6s 之后停止。

这是 exe.bat

 C:\work\bat\ConsoleApplication1.exe

这是 ConsoleApplication1.exe

int _tmain(int argc, _TCHAR* argv[])
{
int a=0;
while(a<100){
    Sleep(100);
    cout<<a++ <<endl;
}
return 0;
}

那么,如何像exe文件一样停止bat文件?

1 个答案:

答案 0 :(得分:0)

尝试此操作以终止该过程。查找进程ID并将其与taskkill命令一起使用。

Runtime rt = Runtime.getRuntime();
rt.exec("taskkill " +<Your process id>);

但它适用于Windows。对于Linux使用此 -

rt.exec("kill -9 " +<Your process id>);