pub enum Signal {
Show 13 variants
Hup,
Int,
Ill,
Abrt,
Fpe,
Pipe,
Alrm,
Term,
Usr1,
Usr2,
Winch,
Cont,
Urg,
}Expand description
A UNIX signal that can be received through a Signals channel.
Signals that cannot be caught (SIGKILL), that generate core dumps by
default (SIGQUIT), or that indicate unrecoverable program faults
(SIGSEGV) are intentionally excluded.
Variants§
Hup
SIGHUP — terminal hang-up or controlling process died.
Int
SIGINT — interactive interrupt (typically Ctrl-C).
Ill
SIGILL — illegal CPU instruction.
Abrt
SIGABRT — process abort.
Fpe
SIGFPE — floating-point exception.
Pipe
SIGPIPE — write to a broken pipe.
Alrm
SIGALRM — alarm-clock timer expired.
Term
SIGTERM — polite termination request.
Usr1
SIGUSR1 — user-defined signal 1.
Usr2
SIGUSR2 — user-defined signal 2.
Winch
SIGWINCH — terminal window-size change.
Cont
SIGCONT — continue a stopped process.
Urg
SIGURG — urgent data available on a socket.
Implementations§
Source§impl Signal
impl Signal
Sourcepub fn is_terminating(&self) -> bool
pub fn is_terminating(&self) -> bool
Returns true if this signal’s conventional action is to terminate
the process.
The terminating signals are: Int, Term,
Ill, Abrt, and Fpe.
All other signals — Hup, Pipe,
Alrm, Usr1, Usr2,
Winch, Cont, Urg
— are non-terminating and may be handled without exiting.
§Examples
use signal_msg::Signal;
assert!(Signal::Int.is_terminating());
assert!(Signal::Term.is_terminating());
assert!(!Signal::Usr1.is_terminating());
assert!(!Signal::Winch.is_terminating());Examples found in repository?
3fn main() {
4 let signals = Signals::new().expect("failed to create signal handler");
5 println!("Waiting for signals...");
6 println!("(try SIGUSR1, SIGWINCH, SIGCONT; send SIGINT or SIGTERM to exit)\n");
7
8 for sig in signals.subscribe() {
9 println!("Got signal: {}", sig);
10 if sig.is_terminating() {
11 println!("\nTerminating on {}.", sig);
12 break;
13 }
14 }
15}