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

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.