この質問は、2014 年 10 月現在の Rust に関するものです。
Rust 1.0 以降を使用している場合は、他の場所で解決策を探すのが最善です。
Processを使用して実行している、ログ値を生成する長時間実行される Rust プロセスがあります。
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 を監視するタスクを開始する必要がありますか?