【发布时间】:2021-02-05 08:45:14
【问题描述】:
我想捕获子进程的 stdout/stderr,但也想将输出流式传输到我的进程的 stdout/stderr。在 bash 我会做类似的事情:
my_command > >(tee /tmp/capture.out) 2> >(tee /tmp/capture.err >&2)
在 Rust 中是否有任何合理简洁或典型的方法来做到这一点?查看std::process::Child.wait_with_output() 和sys::pipe::read2 直接处理stdout/stderr 似乎有些涉及(并且涉及到unsafe 对poll 的调用)。
提出问题的另一种方式可能是“通过子进程的 stdout 和 stderr 进行流式传输的预期方式是什么?”这至少可以让我手动捕获和打印流的内容。
我目前正在使用 std::process,但如果使用 subprocess 板条箱更容易,我愿意换成它。
【问题讨论】:
标签: rust subprocess