control_c.rs 337 B

123456789101112
  1. use std::sync::Arc;
  2. use std::sync::atomic::{AtomicBool, Ordering};
  3. use tracing::info;
  4. pub fn exit_handler(running: Arc<AtomicBool>) {
  5. let r = running.clone();
  6. ctrlc::set_handler(move || {
  7. info!("检测到退出信号!");
  8. r.store(false, Ordering::Relaxed);
  9. })
  10. .expect("Error setting Ctrl-C handler");
  11. }