Crate ctrlc[−][src]
Cross platform handling of Ctrl-C signals.
set_handler() allows setting a handler closure which is executed on
Ctrl+C
. On Unix, this corresponds to a SIGINT
signal. On windows, Ctrl+C
corresponds to
CTRL_C_EVENT
or CTRL_BREAK_EVENT
.
Setting a handler will start a new dedicated signal handling thread where we
execute the handler each time we receive a Ctrl+C
signal. There can only be
one handler, you would typically set one at the start of your program.
Example
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); }).expect("Error setting Ctrl-C handler"); println!("Waiting for Ctrl-C..."); while running.load(Ordering::SeqCst) {} println!("Got it! Exiting..."); }
Handling SIGTERM
Handling of SIGTERM
can be enabled with termination
feature. If this is enabled,
the handler specified by set_handler()
will be executed for both SIGINT
and SIGTERM
.
Enums
Error | Ctrl-C error. |
SignalType | A cross-platform way to represent Ctrl-C or program termination signal. Other
signals/events are supported via |
Functions
set_handler | Register signal handler for Ctrl-C. |
Type Definitions
Signal | Platform specific signal type |