4 个版本 (2 个重大更新)
0.3.0 | 2021 年 12 月 5 日 |
---|---|
0.2.0 | 2021 年 2 月 15 日 |
0.1.1 | 2019 年 9 月 24 日 |
0.1.0 | 2019 年 9 月 23 日 |
在 异步 中排名第 1057
14KB
207 代码行
mio-pidfd
为 mio 提供的 Linux pidfd 包装器。这对于使用 mio 以非阻塞事件驱动方式等待多个子进程退出非常有用。
深受 mio-timerfd 启发
示例
use mio_pidfd::PidFd;
use mio::{Poll, Events, Token, Ready, PollOpt};
use std::process::{Command, Child};
let poll = Poll::new().unwrap();
let mut events = Events::with_capacity(1024);
let mut child = Command::new("/bin/sleep").arg("1").spawn().unwrap();
let pidfd = PidFd::new(&child).unwrap();
poll.register(&pidfd, Token(0), Ready::readable(), PollOpt::edge())
.unwrap();
poll.poll(&mut events, None).unwrap();
assert!(child.try_wait().unwrap().unwrap().code().unwrap() == 0);
要求
此库依赖于在 Linux 内核版本 5.3 中引入的系统调用 pidfd_open()
。系统调用 pidfd_send_signal()
(由辅助的 kill()
功能使用)在 Linux 内核版本 5.1 中引入。
依赖项
~0.3–10MB
~62K SLoC