这个问题是指截至 2014 年 10 月的 Rust。
如果您使用的是 Rust 1.0 或更高版本,您最好在别处寻找解决方案。
我有一个长时间运行的 Rust 进程,它生成日志值,我正在使用Process运行它。
它看起来虽然我可能能够定期“检查”正在运行的进程,并使用set_timeout()
并wait()
执行某种高级循环,例如:
let mut child = match Command::new("thing").arg("...").spawn() {
Ok(child) => child,
Err(e) => fail!("failed to execute child: {}", e),
};
loop {
child.set_timeout(Some(100));
match child.wait() {
// ??? Something goes here
}
}
我不是100%的事情是;我如何区分超时错误和进程返回错误之间的区别wait()
,以及如何使用PipeStream
“在不阻塞流的情况下尽可能多地读取”每个间隔推出。
这是最好的方法吗?我应该开始一项任务来监视 stdout 和 stderr 吗?