Модуль 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"); } }
Модули
| Имя | Флаги | Описание |
|---|---|---|
unix | Unix | Специфичные для Unix типы для обработки сигналов. |
windows | Windows | Специфичные для Windows типы для обработки сигналов. |
Функции
| Имя | Описание |
|---|---|
ctrl_c | Завершается, когда в процесс отправляется уведомление "ctrl-c". |