【发布时间】:2021-12-02 19:36:09
【问题描述】:
我想在两个子进程之间实现管道来执行env | grep USER 之类的东西。这是我已经拥有但不起作用的:
let mut child1 = Command::new(cmd1)
.args(args1)
.stdout(Stdio::piped())
.spawn()
.unwrap();
let pipe = child1.stdout.take().unwrap();
let mut child2 = Command::new(cmd2)
.args(args2)
.stdin(pipe)
.stdout(Stdio::piped())
.spawn()
.unwrap();
它没有显示任何错误。
【问题讨论】:
-
Stdio::piped使您的 Rust 父进程位于管道的另一端。这不是你想要的。对于child1,另一侧应该是child2,并且父级根本不应该打开任何FIFO副本。 -
如果上面的链接为您提供了回答您自己的问题所需的信息,请考虑使用“添加答案”按钮添加描述如何解决问题的答案。 (如果我有时间复制/测试,我会自己这样做,但我现在正在工作,所以如果你有机会的话,你获得荣誉/获得互联网积分是有意义的)。
-
是的,我正在努力让它发挥作用。