我正在用Rust编写服务器,该服务器在一个循环中派生多个进程并运行execv
。分叉的进程正常退出,但是我在进程表中看到所有子进程的<defunct>
条目。
我想获取这些子进程的退出状态而不阻塞主循环。如果我分叉并执行wait
,则循环将阻塞。有没有一种以异步方式处理此问题的方法?
我正在使用nix crate进行派生和execv:
loop {
match fork() {
Ok(ForkResult::Child) => {
// run execv here
}
Ok(ForkResult::Parent { child_pid }) => {
// delegate task for wait
// and continue with loop
}
Err(_) => {
// do some error reporting here
}
}
}