gpt4 book ai didi

java - 如何在 Java 中将子进程 stdout/stderr 重定向到主进程 stdout/stderr?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:08:53 58 4
gpt4 key购买 nike

在其他语言中(如 bashPython),当我们生成一个子进程时,这个新进程将从父进程继承 stdout 和 stderr。这意味着子进程的任何输出都将打印到终端以及父进程的输出。

我们如何在 Java 中实现相同的行为?

我的第一次尝试是:

proc = Runtime.getRuntime().exec(cmd);

但它不会起作用。基于this answerthis answer ,我已将代码替换为:

ProcessBuilder pb = new ProcessBuilder(cmd);
pb.redirectOutput(System.out);
pb.redirectError(System.err);

但这甚至无法编译,因为参数与预期的方法参数不兼容。

最佳答案

您需要读取您创建的进程的输出和错误流,并将输出写入您希望它去的地方(在您的例子中是 System.out 和 System.err)。

编辑。上面的答案对于 java < 7 是正确的。从 javadoc 的 7 开始,它看起来可以改为调用

processBuilder.redirectOutput(Redirect.INHERIT)

关于java - 如何在 Java 中将子进程 stdout/stderr 重定向到主进程 stdout/stderr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10540631/

58 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com