27 lines
784 B
Rust
27 lines
784 B
Rust
// Copyright (c) 2023 CtrlC developers
|
|
// Licensed under the Apache License, Version 2.0
|
|
// <LICENSE-APACHE or
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT
|
|
// license <LICENSE-MIT or http://opensource.org/licenses/MIT>,
|
|
// 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));
|
|
}
|