[dependencies]
signal-hook = "0.3.14"
use std::{thread, time::Duration};
use signal_hook::consts::SIGINT;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut signals = signal_hook::iterator::Signals::new(&[SIGINT])?;
println!("please press ctrl-c");
thread::spawn(move || {
for signal in signals.forever() {
println!("received signal {signal:?}");
}
});
thread::sleep(Duration::from_secs(10));
Ok(())
}
在终端执行:
cargo run
待屏幕输出 “please press ctrl-c” 后,按 Control + C 多次。将得到类似下面的输出:
please press ctrl-c
^Creceived signal 2
^Creceived signal 2
^Creceived signal 2
^Creceived signal 2
^Creceived signal 2