1use std::io::Error;
2
3#[cfg(windows)]
4fn main() -> Result<(), Error> {
5 unimplemented!("this example doesn't work on windows")
6}
7
8#[cfg(not(windows))]
9fn main() -> Result<(), Error> {
10 use libc::c_int;
11 use signal_hook::consts::signal::*;
12 use signal_hook::low_level;
13
14 #[cfg(feature = "extended-siginfo")]
15 type Signals =
16 signal_hook::iterator::SignalsInfo<signal_hook::iterator::exfiltrator::origin::WithOrigin>;
17
18 #[cfg(not(feature = "extended-siginfo"))]
19 use signal_hook::iterator::Signals;
20
21 const SIGNALS: &[c_int] = &[
22 SIGTERM, SIGQUIT, SIGINT, SIGTSTP, SIGWINCH, SIGHUP, SIGCHLD, SIGCONT,
23 ];
24 let mut sigs = Signals::new(SIGNALS)?;
25 for signal in &mut sigs {
26 eprintln!("Received signal {:?}", signal);
27 #[cfg(feature = "extended-siginfo")]
28 let signal = signal.signal;
29 low_level::emulate_default_handler(signal)?;
31 }
32 Ok(())
33}