我试图从调用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)
。