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");
for sig in signals.subscribe() {
println!("received: {}", sig);
if sig.is_terminating() { break; }
}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.