【发布时间】:2014-06-03 12:28:07
【问题描述】:
我有一个外部可执行程序,我想在我的 java 程序中运行它。在它运行时,我需要一种方法来获取 .exe 正在输出的内容,以及一种将输入发送回 .exe 的方法。到目前为止,这是我想出来的:
public int run(){
String cmdRun = "cmd C:\\Meister\\Student\\bin\\Student.exe";
int returnCode = 1;
try {
Process p = Runtime.getRuntime().exec(cmdRun); // makes appropriate system call
BufferedReader stdError = new BufferedReader(new
InputStreamReader(p.getErrorStream()));
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));
String s = null;
// read any info from the attempted command
while ((s = stdError.readLine()) != null){ returnCode = -1; break; }
while ((s = stdInput.readLine()) != null){ System.out.println(s); }
System.out.println("Finished with exit code " + p.waitFor());
} catch (Exception e) {
e.printStackTrace();
}
return returnCode;
}
我应该如何正确运行(1)程序,GET(2)程序输出,然后在必要时向程序发送(3)输入?
编辑:顺便说一句,当我运行上面看到的方法时,即使正在执行文件,我也看不到任何输出。
【问题讨论】:
标签: java process cmd system-calls