A simple easy to use wrapper around Ctrl-C signal.
- libc
- lazy_static (only with stable and beta compilers)
extern crate ctrlc;
use ctrlc::CtrlC;
use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::Arc;
fn main() {
let running = Arc::new(AtomicBool::new(true));
let r = running.clone();
CtrlC::set_handler(move || {
r.store(false, Ordering::SeqCst);
});
println!("Waiting for Ctrl-C...");
while running.load(Ordering::SeqCst) {}
println!("Got it! Exiting...");
}
cargo run --example readme_example
If you're using a nightly compiler, I suggest building with cargo build --features nightly
to avoid the dependency to lazy_static. On stable and beta compilers cargo build
will do.