【发布时间】:2016-01-29 20:53:48
【问题描述】:
我想执行另一个进程,通常想等到它完成。假设我们在线程 T1 中生成并等待进程:
let child = Command::new("rustc").spawn().unwrap();
child.wait();
现在,如果发生特殊事件(T0 正在等待哪个线程),我想终止生成的进程:
if let Ok(event) = special_event_notifier.recv() {
child.kill();
}
但我看不出有什么办法:kill 和wait 都对Child 进行了可变引用,因此它们是互斥的。在调用wait 之后,没有人可以再引用child。
我找到了wait-timeout crate,但我想知道是否还有其他方法。
【问题讨论】:
-
嗯,这似乎是在问题跟踪器中提出的一个好问题。
-
从 Rust 1.18 开始可以使用
Child::try_wait()进行忙碌等待。但这并不能真正解决问题......
标签: rust