请查看我编写的以下代码段
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文件完成其进程的原因。