Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Модуль signal

Доступно только с флагом функции signal.

Асинхронная обработка сигналов для Tokio.

Обратите внимание, что обработка сигналов в целом является очень сложной темой и должна использоваться с большой осторожностью. Этот крейт пытается реализовать "лучшие практики" для обработки сигналов, но его следует оценить с учетом потребностей ваших собственных приложений, чтобы убедиться в его пригодности.

Также существуют некоторые фундаментальные ограничения этого крейта, документированные в OS-специфичных структурах.

Примеры

Вывод при получении уведомления "ctrl-c"

use tokio::signal;

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

Ожидание SIGHUP в Unix

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

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Бесконечный поток сигналов hangup.
    let mut stream = signal(SignalKind::hangup())?;

    // Выводим сообщение при каждом получении сигнала HUP
    loop {
        stream.recv().await;
        println!("получен сигнал HUP");
    }
}

Модули

ИмяФлагиОписание
unixUnixСпецифичные для Unix типы для обработки сигналов.
windowsWindowsСпецифичные для Windows типы для обработки сигналов.

Функции

ИмяОписание
ctrl_cЗавершается, когда в процесс отправляется уведомление "ctrl-c".