Expand description
Unified OS signal handling for Rust.
signal-mod is a runtime-agnostic substrate for cross-platform
signal handling and graceful shutdown orchestration. It provides:
- A platform-neutral
Signalenum covering SIGTERM, SIGINT, SIGHUP, SIGQUIT, SIGPIPE, SIGUSR1, SIGUSR2 and their Windows console-event equivalents. - A
Coordinatorthat owns the shutdown state machine and runs priority-orderedShutdownHooks under a configurable timeout ladder. - Cloneable
ShutdownToken(observer) andShutdownTrigger(initiator) handles that can be passed independently through a program’s supervision tree. - Optional runtime adapters for
tokioandasync-stdexposingtoken.wait().await.
§Quick start
use signal_mod::{Coordinator, ShutdownReason, SignalSet};
use std::time::Duration;
#[tokio::main]
async fn main() -> signal_mod::Result<()> {
let coord = Coordinator::builder()
.signals(SignalSet::graceful())
.graceful_timeout(Duration::from_secs(5))
.hook(signal_mod::hook_from_fn(
"flush-logs",
100,
|reason| eprintln!("shutting down: {reason}"),
))
.build();
coord.install()?;
let token = coord.token();
token.wait().await;
let reason = token.reason().unwrap_or(ShutdownReason::Requested);
coord.run_hooks(reason);
Ok(())
}See .dev/DESIGN.md and REPS.md for the design contract.
Structs§
- Coordinator
- Owns the shutdown state machine, hook list, and (optionally) the installed signal handlers.
- Coordinator
Builder - Builder for
Coordinator. - FnHook
- Closure-backed
ShutdownHook. - Shutdown
Token - Cloneable observer handle.
- Shutdown
Trigger - Cloneable initiator handle.
- Signal
Set - A bit-packed set of
Signalvalues. - Signal
SetIter - Iterator over the signals enabled in a
SignalSet. - Statistics
- Snapshot of coordinator state, returned by
Coordinator::statistics.
Enums§
- Error
- Errors produced by
signal-modoperations. - Shutdown
Reason - Why a shutdown was initiated.
- Signal
- A platform-neutral signal identifier.
Constants§
- VERSION
- Crate version string, populated by Cargo at build time.
Traits§
- Shutdown
Hook - A unit of cleanup work to run during shutdown.
Functions§
- hook_
from_ fn - Convenience: wrap a closure as a
ShutdownHook.
Type Aliases§
- Result
- Convenience alias for
Result<T, signal_mod::Error>.