调用 shell 运行管道在 rust 的 Command.output 中失败



我试图从调用shell和grep结果中获得结果。但是它失败了,在shell中,它可以工作。

use std::process::Command;
fn main() {
let result = Command::new("sh")
.arg("-c")
.arg("last")                // by this line it works
// .arg("last | grep 'still logged in'")  // by this line, it will return 256 code
.output()
.expect("'last' command failed to start");
println!("{:?}", result);
}

https://doc.rust-lang.org/stable/std/process/struct.ExitStatus.html

ExitStatus表示过程的每一种可能的处置。在Unix上,这是等待状态。它是而不是,只是退出状态(传递给exit的值)。

参见我使用wait(&status),而status的值是256,为什么?未找到匹配项,grep返回1,这成为256的存在状态。

如果需要退出码,请拨打output.status.code()。这将正确返回Some(1)

相关内容

  • 没有找到相关文章