4个版本 (2个重大更新)
0.3.1 | 2022年1月8日 |
---|---|
0.3.0 | 2021年1月26日 |
0.2.0 | 2020年12月21日 |
0.1.0 | 2020年11月22日 |
#193 在 异步
158,612 每月下载量
用于 59 个开源软件包 (41个直接使用)
125KB
1.5K SLoC
Signal-hook-tokio
这是signal-hook库的Tokio适配器。有关更多详细信息,请参阅文档。
许可协议
根据以下任一许可协议授权
- Apache License, Version 2.0, (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
供您选择。
贡献
除非您明确说明,否则根据Apache-2.0许可协议定义,您有意提交的任何贡献都将按照上述方式双重授权,不附加任何额外的条款或条件。
lib.rs
:
一个用于将信号处理与Tokio运行时集成的库。
这提供了一个[Signals
][Signals]结构体,它充当信号的Stream
。
请注意,必须启用此库的futures-v0_3
功能,才能使Signals
实现Stream
特质。
示例
use std::io::Error;
use signal_hook::consts::signal::*;
use signal_hook_tokio::Signals;
use futures::stream::StreamExt;
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!(),
}
}
}
#[tokio::main]
async fn main() -> Result<(), Error> {
let signals = Signals::new(&[
SIGHUP,
SIGTERM,
SIGINT,
SIGQUIT,
])?;
let handle = signals.handle();
let signals_task = tokio::spawn(handle_signals(signals));
// Execute your main program logic
// Terminate the signal stream.
handle.close();
signals_task.await?;
Ok(())
}
依赖关系
~2–11MB
~94K SLoC