4个版本
0.2.2 | 2022年1月8日 |
---|---|
0.2.1 | 2021年1月31日 |
0.2.0 | 2020年12月21日 |
0.1.0 | 2020年11月22日 |
#618 in 操作系统
7,051 每月下载次数
在 17 个crate中使用 (9 直接使用)
125KB
1.5K SLoC
Signal-hook-async-std
这是一个signal-hook crate的async-std适配crate。有关更多详细信息,请参阅文档。
许可协议
根据以下任一协议许可:
- Apache许可证第2版 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,均应按照上述方式双许可,不附加任何额外条款或条件。
lib.rs
:
一个用于将信号处理与async-std运行时集成的模块。
这提供了Signals
结构体,该结构体作为信号Stream
。
示例
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(())
}
依赖项
~3–15MB
~157K SLoC