Expand description
Handle UNIX process signals with a shared channel.
This crate provides a correct, ergonomic approach to UNIX signal handling.
The self-pipe trick ensures that the actual signal handler only calls
write(2) — the only async-signal-safe operation needed. A background
thread named signal-msg performs all non-trivial work. Multiple
independent subscribers are supported via Signals::subscribe.
Signal handlers are installed automatically when Signals::new returns,
so it is impossible to forget to activate them.
§Example
use signal_msg::Signals;
let signals = Signals::new().expect("failed to create signal handler");
let receiver = signals.subscribe();
println!("Waiting for a signal...");
match receiver.listen() {
Ok(sig) => println!("received: {}", sig),
Err(e) => eprintln!("channel error: {}", e),
}Structs§
- Receiver
- Receives UNIX signals forwarded through a
Signalschannel. - Signals
- A handle for subscribing to OS signals delivered through a shared channel.
Enums§
- Signal
- A UNIX signal that can be received through a
Signalschannel. - Signal
Error - An error produced by signal channel operations.