# tokio::signal - Rust
API documentation for the Rust `signal` mod in crate `tokio`.
Keywords: rust, rustlang, rust-lang, signal

# Module tokio::signal [−] [src]

Asynchronous signal handling for Tokio

Note that signal handling is in general a very tricky topic and should be used with great care. This crate attempts to implement 'best practice' for signal handling, but it should be evaluated for your own applications' needs to see if it's suitable.

There are some fundamental limitations of this crate documented on the OS specific structures, as well.

# Examples

Print on "ctrl-c" notification.

    use tokio::signal;

    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error>> {
        signal::ctrl_c().await?;
        println!("ctrl-c received!");
        Ok(())
    }

Wait for SIGHUP on Unix

    use tokio::signal::unix::{signal, SignalKind};

    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error>> {
        // An infinite stream of hangup signals.
        let mut stream = signal(SignalKind::hangup())?;

        // Print whenever a HUP signal is received
        loop {
            stream.recv().await;
            println!("got signal HUP");
        }
    }

## Modules

unix | Unix-specific types for signal handling.

## Functions

ctrl_c | Completes when a "ctrl-c" notification is sent to the process.