Этот вопрос относится к Rust по состоянию на октябрь 2014 года.Как вы могли бы вывести поток из процесса в ржавчине?
Если вы используете 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?
редактирования вы сделали слишком резкое - это аннулировал существующий ответ. Я откатил редактирование и возвратил вашу награду. Задайте новый вопрос. Если вам не нужен этот вопрос на сайте, вы можете удалить его, поскольку он имеет только один ответ без каких-либо изменений. – ChrisF
@ChrisF вы должны шутить. – Doug
Нет, я не шучу. Редактирование было полным переписанием вопроса. Было бы лучше задать совершенно новый вопрос. – ChrisF