我想逐行获取命令行的实时输出,并将该行传递给另一个函数以进行进一步处理。我有以下代码用于读取输出:
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(使用前将#替换为@)