6 releases (3 breaking)
| 0.4.0 | Jan 1, 2026 |
|---|---|
| 0.3.0 | Apr 21, 2025 |
| 0.2.2 | Jan 8, 2022 |
| 0.2.1 | Jan 31, 2021 |
| 0.1.0 | Nov 22, 2020 |
#1580 in Asynchronous
19,306 downloads per month
Used in 17 crates
(10 directly)
130KB
1.5K
SLoC
A module for integrating signal handling with the async-std runtime.
This provides the Signals struct which acts as a
Stream of signals.
Example
use std::io::Error;
use async_std::prelude::*;
use signal_hook::consts::signal::*;
use signal_hook_async_std::Signals;
async fn handle_signals(mut signals: Signals) {
while let Some(signal) = signals.next().await {
match signal {
SIGHUP => {
// Reload configuration
// Reopen the log file
}
SIGTERM | SIGINT | SIGQUIT => {
// Shutdown the system;
},
_ => unreachable!(),
}
}
}
#[async_std::main]
async fn main() -> Result<(), Error> {
let signals = Signals::new(&[SIGHUP, SIGTERM, SIGINT, SIGQUIT])?;
let handle = signals.handle();
let signals_task = async_std::task::spawn(handle_signals(signals));
// Execute your main program logic
// Terminate the signal stream.
handle.close();
signals_task.await;
Ok(())
}
signal-hook-async-std
This is a async-std adapter crate for the signal-hook crate. See the documentation for further details.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/license/mit)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~2.3–6.5MB
~147K SLoC