阅读其他人写的标准

时间:2016-06-23 08:32:42

标签: java

我想阅读在使用inheritIO生成其他进程的Java进程中写入stdout的内容。 我无法使用redirectOut ,因为我无法控制启动进程的代码!另请注意,在这种情况下,重置System.setOut不起作用。 此外,我无权访问Process对象。

示例:

new ProcessBuilder().command('/bin/echo', 'FooBar').inheritIO.start
// read 'FooBar' from standard out

1 个答案:

答案 0 :(得分:1)

根据定义,inheritIO使子进程的输出与调用者的输出相同。因此,只要在ProcessBuilder上调用它,调用进程就不能读取标准输出和被调用者的错误流。

正如你所说,你不能改变它,我能想象的唯一方法是使用外部启动器将输出重定向到管道(ProcessBuilder的默认值......),启动包含你显示的行的程序({{ 1}})和输出的过程。