分叉后如何异步等待子进程?

时间:2019-01-16 21:36:16

标签: linux unix process rust

我正在用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
        }
    }
}

0 个答案:

没有答案