我正在使用standard从Java启动一个外部进程java.lang.Process
。我试图弄清楚该过程的输出是什么,但采用结合了stdout
和的格式stderr
。
目前,我拥有的Process#getInputStream
访问权限stdout
和Process#getErrorStream
提供的访问权限stderr
。一切都很好,除了我们无法按时间戳区分stdout和stderr的输出。
假设该过程具有以下输出:
Java不允许我们知道(B)行是在(A)之后还是(C)之前编写的。我想知道是否有任何方法可以合并外部进程的stdout和stderr,以便我们知道按哪个顺序将语句打印到输出。
如果使用ProcessBuilder
API而不是普通的Runtime.exec(),则可以重定向Output和Error流,包括将它们重定向到同一流。
ProcessBuilder pb =
new ProcessBuilder("myCommand", "myArg1", "myArg2");
pb.redirectErrorStream(true); // merges err with out
pb.redirectOutput(Redirect.appendTo(new File("out.txt")));
Process p = pb.start();
p.waitFor();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句