我想从使用ProcessBuilder的Java应用程序运行交互式可执行文件;它应该接受输入,产生输出,然后等待下一个输入。这里输入/输出流的主要问题。我发送一个输入并且什么也没得到。下面是代码:使用ProcessBuilder从Java Interactive Process读取InputStream
private static Process process;
private static BufferedReader result;
private static PrintWriter input;
process = new ProcessBuilder("compile-lm", lmFile.toString(), " --score yes").redirectErrorStream(true).start();
input = new PrintWriter(new OutputStreamWriter(process.getOutputStream()), true);
input.println(message);
System.out.println(message);
result = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = new String();
while ((line = result.readLine()) != null)
{
/* Some processing for the read line */
System.out.println("output:\t" + line);
}
如果你有退出状态尝试使用'int es = process.waitFor(); '并显示它到什么问题 – zizoujab 2012-08-01 09:49:35
@ZiedJaballah我试图在正确的操作'input.println(message)'之后获得退出状态并且它是0“正常终止”。还有什么我可以尝试调查问题在哪里? – asadek 2012-08-01 10:43:14
尝试更改命令。代码听起来很干净。也许你没有得到一个输出,只是因为这个命令没有任何回报。 – zizoujab 2012-08-03 17:09:29