如何传递 shell 命令的实时 stdout 行以在 Rust 中运行?

2024-02-22

我想逐行获取命令行的实时输出,并将该行传递给另一个函数以进行进一步处理。我有以下代码用于读取输出:

fn output(x: &str) -> Result<(), Error> {
    let stdout = Command::new("strace")
        .args(&["-p", x])
        .stdout(Stdio::piped())
        .spawn()?
        .stdout
        .ok_or_else(|| Error::new(ErrorKind::Other,"Could not capture standard output."))?;

    let reader = BufReader::new(stdout);
    
    reader
        .lines()
        .filter_map(|line| line.ok())
        .for_each(|line| println!("hello {}", line));

     Ok(())
}

我尝试更改 .for_each 以将其传递到函数中,但它不起作用。添加 println!(); 后,它仍然打印出正常输出。为了调试,我发现这些行甚至没有到达该函数。我被困住了。请帮忙!


根据 @justinas 的评论,我在代码中用“stderr”替换了“stdout”,它起作用了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何传递 shell 命令的实时 stdout 行以在 Rust 中运行? 的相关文章

随机推荐