// Copyright (c) 2023 CtrlC developers // Licensed under the Apache License, Version 2.0 // or the MIT // license , // at your option. All files in the project carrying such // notice may not be copied, modified, or distributed except // according to those terms. use std::sync::{ atomic::{AtomicBool, Ordering}, Arc, }; pub fn run_signal_hook() { let hook = Arc::new(AtomicBool::new(false)); signal_hook::flag::register(signal_hook::consts::SIGINT, Arc::clone(&hook)).unwrap(); unsafe { super::platform::raise_ctrl_c(); } std::thread::sleep(std::time::Duration::from_millis(100)); assert!(hook.load(Ordering::SeqCst)); }