34个稳定版本 (3个主要版本)

3.4.5 2024年8月13日
3.4.4 2024年3月10日
3.4.2 2023年12月22日
3.4.1 2023年9月3日
0.1.1 2015年7月16日

#6 in Operating systems

Download history 315800/week @ 2024-05-04 343900/week @ 2024-05-11 359833/week @ 2024-05-18 336137/week @ 2024-05-25 382467/week @ 2024-06-01 365505/week @ 2024-06-08 342674/week @ 2024-06-15 339630/week @ 2024-06-22 323026/week @ 2024-06-29 340759/week @ 2024-07-06 312132/week @ 2024-07-13 328741/week @ 2024-07-20 320189/week @ 2024-07-27 302428/week @ 2024-08-03 347541/week @ 2024-08-10 318186/week @ 2024-08-17

1,347,990 个月下载量
用于 1,038 个crate(830个直接使用)

MIT/Apache

21KB
294 代码行数(不包括注释)

CtrlC

围绕Ctrl-C信号的简单易用包装器。

文档

示例用法

cargo.toml

[dependencies]
ctrlc = "3.4"

然后,在 main.rs

use std::sync::mpsc::channel;
use ctrlc;

fn main() {
    let (tx, rx) = channel();
    
    ctrlc::set_handler(move || tx.send(()).expect("Could not send signal on channel."))
        .expect("Error setting Ctrl-C handler");
    
    println!("Waiting for Ctrl-C...");
    rx.recv().expect("Could not receive from channel.");
    println!("Got it! Exiting..."); 
}

亲自尝试示例

cargobuild --examples && target/debug/examples/readme_example

处理SIGTERM和SIGHUP

使用termination功能将CtrlC添加到Cargo.toml,CtrlC将处理SIGINT、SIGTERM和SIGHUP。

许可证

根据以下任一许可证授权

贡献

除非您明确表示,否则您提交的任何有意包含在作品中的贡献都将根据上述双重许可证授权,无需任何额外条款或条件。

类似的crate

有其他替代方案,可以提供对不同的信号更多的控制,或添加异步支持。

依赖项

~2–11MB
~98K SLoC