如何将标准错误和标准输入交错到 std::process::Command 中?

4

查看API,似乎不支持交错(实时将stdout重定向到stderr或反之)。如果需要,我该如何做?


如果您在Unix上,我认为您可以使用to_raw_fd()获取所需的文件描述符,并使用from_raw_fd()构造一个Stdio以提供给Command - Chris Emerson
看了一下那个怎么运作的方式,发现自己陷入了一个迷宫。 - tshepang
1
仔细看,我同意我认为它不是直接支持的。一种蛮力的方法是使用shell(即安装spawing my_prog foo,生成sh -c 'my_prog foo 2>&1',但需要注意所需的引号。 - Chris Emerson
这似乎是这个问题的重复:https://dev59.com/olgR5IYBdhLWcg3wr-4Y - caarrrl
1个回答

0

混淆的源头在哪里?您可以使用FromRawFd::from_raw_fd创建一个Stdio对象,并将文件描述符用作Stdio实现的特征。


这个答案仅适用于类UNIX系统,不是跨平台的。请注意类型名称中的 unixstd::os::unix::io::FromRawFd - Shepmaster
1
最好展示一个完整的例子,其中stderr和stdout交错出现。 - Shepmaster
我并没有看出“what's the source of confusion”这个问题有什么攻击性。我只是诚实地询问而已。是的,这个解决方案只适用于Unix系统。也许可以编写一个crate来将其抽象化以适用于其他平台。 - dpc.pw
我相信你并不是有意要表现得咄咄逼人,但我想让你知道这样的言辞可能会被解读为是这样的。当你添加一个例子来说明它的工作原理时,我建议你强调这个答案仅适用于UNIX系统! - Shepmaster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接