Skip to main content

Crate signal_msg

Crate signal_msg 

Source
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 Signals channel.
Signals
A handle for subscribing to OS signals delivered through a shared channel.

Enums§

Signal
A UNIX signal that can be received through a Signals channel.
SignalError
An error produced by signal channel operations.