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异步

Download history · Rust 包仓库 39185/week @ 2024-03-14 · Rust 包仓库 35339/week @ 2024-03-21 · Rust 包仓库 50951/week @ 2024-03-28 · Rust 包仓库 35824/week @ 2024-04-04 · Rust 包仓库 32936/week @ 2024-04-11 · Rust 包仓库 37638/week @ 2024-04-18 · Rust 包仓库 33982/week @ 2024-04-25 · Rust 包仓库 31403/week @ 2024-05-02 · Rust 包仓库 35657/week @ 2024-05-09 · Rust 包仓库 39498/week @ 2024-05-16 · Rust 包仓库 39390/week @ 2024-05-23 · Rust 包仓库 35185/week @ 2024-05-30 · Rust 包仓库 40766/week @ 2024-06-06 · Rust 包仓库 36748/week @ 2024-06-13 · Rust 包仓库 39288/week @ 2024-06-20 · Rust 包仓库 35062/week @ 2024-06-27 · Rust 包仓库

158,612 每月下载量
用于 59 个开源软件包 (41个直接使用)

Apache-2.0/MIT

125KB
1.5K SLoC

Signal-hook-tokio

Travis Build Status

这是signal-hook库的Tokio适配器。有关更多详细信息,请参阅文档

许可协议

根据以下任一许可协议授权

供您选择。

贡献

除非您明确说明,否则根据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