我需要从我的java应用程序运行exe。所以我写了一个.bat文件,我从我的java应用程序调用它。 批处理文件运行exe。
这是:
String command = "C:\\Users\\XXXX\\Desktop\\DenemeBat\\hadi.bat";
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", command);
pb.redirectErrorStream(true);
Process p = pb.start();
InputStream is = p.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
int excode=p.waitFor();
但是可以有不同的方法从java调用exe。例如。
案例:1
String command = "C:\\Users\\XXXX\\Desktop\\DenemeBat\\hadi.bat";
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", command);
pb.redirectErrorStream(true);
Process p = pb.start();
案例:2 这里没有cmd。直接链接到.bat文件。
String command = "C:\\Users\\XXXX\\Desktop\\DenemeBat\\hadi.bat";
ProcessBuilder pb = new ProcessBuilder(command);
pb.redirectErrorStream(true);
Process p = pb.start();
案例:3 这里没有.bat文件和cmd.Directly运行exe。
String command = "C:\\Users\\XXXX\\Desktop\\DenemeBat\\tryabc.exe";
ProcessBuilder pb = new ProcessBuilder(command);
pb.redirectErrorStream(true);
Process p = pb.start();
那么哪种方式更好。我真正的问题是有必要破坏这个过程。
我使用waitfor方法,如果代码运行良好,则返回0.
问题1:杀死进程的正确方法是什么?
问题2:是否有必要杀死进程。如果我不杀死会发生什么?
问题3:如果我使用.bat文件需要我杀死进程吗?
问题4:如果我不使用.bat,cmd并直接运行exe,是否有必要终止进程?
最后,waitfor和destroy方法有什么区别?waitfor方法是否也会破坏进程?
答案 0 :(得分:1)
在您的情况下,最好的解决方案是使用带有.exe路径的ProcessBuilder作为命令来简单地调用您的可执行文件。
关于您的问题(根据java 7 doc):
destroy
杀死了这个过程。WaitFor和Destroy之间的区别: WaitFor基本上使执行程序的线程等到它完成,而destroy完成该过程。