我想在使用Java的CMD窗口中启动一个进程,最简单的方法是通过
Runtime.getRuntime().exec("cmd /c start program.exe")
问题是现在我无法从流程中获得输入。如何从流程中获取输出并能够在单独的CMD窗口中运行它?
答案 0 :(得分:0)
您的问题是start
是一个单独的命令,其目的是启动一个与调用cmd
的{{1}}无关的全新过程。无论start
执行什么,都没有连接到原始start
,并且您的Java程序无法访问它。
如果您需要访问子流程'in / out / err流,请不要使用cmd
。
答案 1 :(得分:0)
嘿兄弟,如果你想打印你的过程的输出过程使用这个
Process process= Runtime.getRuntime().exec("cmd /c start program.exe");
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = br.readLine()) != null) {
line = br.readLine();
System.out.println(line);
}
通过这个,您将获得与cmd输出完全相同的每个输出过程。
如果你想处理2 cmd,你可以使用不同的exec进行2次处理
Process process1 = Runtime.getRuntime().exec("cmd /c start program1.exe");
Process process2 = Runtime.getRuntime().exec("cmd /c start program2.exe");
如果你想用同一个线程进行这个运行请阅读关于线程的java书籍,你可以用线程同时运行它。