【发布时间】:2012-05-10 19:08:09
【问题描述】:
在其他语言中(如 bash 和 Python),当我们生成子进程时,这个新进程将从父进程继承 stdout 和 stderr。这意味着子进程的任何输出都将打印到终端以及父进程的输出。
我们如何在 Java 中实现相同的行为?
我的第一次尝试是:
proc = Runtime.getRuntime().exec(cmd);
但这行不通。基于this answer 和this answer,我将代码替换为:
ProcessBuilder pb = new ProcessBuilder(cmd);
pb.redirectOutput(System.out);
pb.redirectError(System.err);
但这甚至无法编译,因为参数与预期的方法参数不兼容。
【问题讨论】: