繁体   English   中英

读取Java进程的inputstream

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM