Skip to content

Wrapping Linux's pidfd for mio

License

Notifications You must be signed in to change notification settings

upsuper-forks/mio-pidfd

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mio-pidfd

A Linux pidfd wrapper for mio. This is useful for using mio to wait for multiple child processes to exit in a non-blocking event-driven way.

Heavily inspired by mio-timerfd

Example

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);

Requirements

This library relies on the pidfd_open() system call which was introduced in Linux kernel version 5.3. The pidfd_send_signal() system call (used by supplementary kill() functionality) was introduced in Linux kernel version 5.1

About

Wrapping Linux's pidfd for mio

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%