【发布时间】:2014-06-17 02:16:09
【问题描述】:
我正在尝试使用 Java 中的 Processbuilder 运行 Linux 进程,然后读取输入和错误流。 Linux 进程是一个阻塞进程,并将输出写入控制台/标准输出。
当我尝试读取 java 进程的输入流(重定向的错误流)时,在进程写入最多 4K 字节之前,我没有得到任何数据。一旦进程输出达到这个限制,我就会在输入流中获得可用的数据。如何改变这种行为并从输入流中实时获取数据,而不是等到它达到 4K。
这是我尝试过的:
process = new ProcessBuilder().command("some daemon program", "arg1").start();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null)
System.out.println(line);
只有在 ~4k 字节之后,我才能在输入流中获得可用的数据。有什么想法???
【问题讨论】:
标签: java process io inputstream processbuilder