[英]Read inputstream of a java process
我正在尝试使用Java中的Processbuilder运行Linux进程,然后读取输入和错误流。 Linux进程是一个阻塞进程,并将输出写入控制台/ stdout。
当我尝试读取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端,您无能为力。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.