Module signal_hook::iterator [−][src]
An iterator over incoming signals.
This provides a higher abstraction over the signals, providing a structure
(Signals
) able to iterate over the incoming signals.
In case the tokio-support
feature is turned on, the Async
is also
available, making it possible to integrate with the tokio runtime.
Examples
extern crate libc; extern crate signal_hook; use std::io::Error; use signal_hook::iterator::Signals; fn main() -> Result<(), Error> { let signals = Signals::new(&[ libc::SIGHUP, libc::SIGTERM, libc::SIGINT, libc::SIGQUIT, ])?; 'outer: loop { // Pick up signals that arrived since last time for signal in signals.pending() { match signal as libc::c_int { libc::SIGHUP => { // Reload configuration // Reopen the log file } libc::SIGTERM | libc::SIGINT | libc::SIGQUIT => break 'outer, _ => unreachable!(), } } // Do some bit of work ‒ something with upper limit on waiting, so we don't block // forever with a SIGTERM already waiting. } println!("Terminating. Bye bye"); Ok(()) }
Structs
Async |
An asynchronous stream of registered signals. |
Forever |
The infinite iterator of signals. |
Pending |
The iterator of one batch of signals. |
Signals |
The main structure of the module, representing interest in some signals. |