Process Builder的输入流永远不会返回流的结尾

时间:2016-02-26 09:34:09

标签: java linux sh inputstream processbuilder

请查看我编写的以下代码段

List<String> commandList = new ArrayList<String>();
commandList.add("sh");
commandList.add(START_PGSQL_FILE_PATH);
ProcessBuilder builder = new ProcessBuilder(commandList);
builder.directory(new File(BIN_DIRECTORY));
builder.redirectErrorStream(true);
Process process = builder.start();
StringBuilder sb = new StringBuilder();
String line = null;
while((line = br.readLine()) != null)
{
line = br.readLine();
sb.append(line);
system.out.println(line);
}
system.out.println(sb.toString());

该行始终打印并打印,直到sh文件完成其进程。但仍然输入流等待。当我在控制台中运行时,相同的sh文件,它工作正常并且过程完成而不等待任何用户输入

它并不总是发生,但它大部分时间都会发生。所以我只是反复执行代码,直到它转到代码的下一行。

但是为什么会发生这种情况?还有什么是inputStream等待sh文件完成其进程的原因。

0 个答案:

没有答案