跳到主要内容

Module signal

搜索

Module signal 

Source
展开描述

Tokio 的异步信号处理。

请注意,信号处理通常是一个非常难处理的话题, 应该谨慎使用。本 crate 尝试实现“最佳实践”的信号处理, 但你应该根据自己应用程序的需求评估它是否适用。

本 crate 的一些基本局限制也在操作系统版本的 结构体文档中提到。

§示例

在接到 “ctrl-c” 通知时打印。

use tokio::signal;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    signal::ctrl_c().await?;
    println!("ctrl-c received!");
    Ok(())
}

在 Unix 上等待 SIGHUP

use tokio::signal::unix::{signal, SignalKind};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // An infinite stream of hangup signals.
    let mut stream = signal(SignalKind::hangup())?;

    // Print whenever a HUP signal is received
    loop {
        stream.recv().await;
        println!("got signal HUP");
    }
}

模块§

windows
Windows 专用的信号处理类型。

函数§

ctrl_c
当进程接到 “ctrl-c” 通知时完成。