Module signal_hook_mio::v0_7 [−][src]
A module for integrating signal handling with the MIO 0.7 runtime.
This provides the Signals
struct as an abstraction
which can be used with mio::Poll
.
Examples
use std::io::{Error, ErrorKind}; use signal_hook::consts::signal::*; use signal_hook_mio::v0_7::Signals; use mio::{Events, Poll, Interest, Token}; fn main() -> Result<(), Error> { let mut poll = Poll::new()?; let mut signals = Signals::new(&[ SIGTERM, ])?; let signal_token = Token(0); poll.registry().register(&mut signals, signal_token, Interest::READABLE)?; let mut events = Events::with_capacity(10); 'outer: loop { poll.poll(&mut events, None) .or_else(|e| if e.kind() == ErrorKind::Interrupted { // We get interrupt when a signal happens inside poll. That's non-fatal, just // retry. events.clear(); Ok(()) } else { Err(e) })?; for event in events.iter() { match event.token() { Token(0) => { for signal in signals.pending() { match signal { SIGTERM => break 'outer, _ => unreachable!(), } } }, _ => unreachable!("Register other sources and match for their tokens here"), } } } Ok(()) }
Structs
Pending | The iterator of one batch of signals. |
SignalsInfo | A struct which mimics |
Type Definitions
Signals | A simplified signal iterator. |