blob: 4007f9171a2df8ed4866cd7cee21105ab2427100 [file] [log] [blame]
use libc::c_int;
use signal_hook::consts::signal::*;
use signal_hook::low_level;
use std::io::Error;
#[cfg(feature = "extended-siginfo")]
type Signals =
signal_hook::iterator::SignalsInfo<signal_hook::iterator::exfiltrator::origin::WithOrigin>;
#[cfg(not(feature = "extended-siginfo"))]
use signal_hook::iterator::Signals;
fn main() -> Result<(), Error> {
const SIGNALS: &[c_int] = &[
SIGTERM, SIGQUIT, SIGINT, SIGTSTP, SIGWINCH, SIGHUP, SIGCHLD, SIGCONT,
];
let mut sigs = Signals::new(SIGNALS)?;
for signal in &mut sigs {
eprintln!("Received signal {:?}", signal);
#[cfg(feature = "extended-siginfo")]
let signal = signal.signal;
// After printing it, do whatever the signal was supposed to do in the first place
low_level::emulate_default_handler(signal)?;
}
Ok(())
}