1 个不稳定版本
0.1.0 | 2024年6月5日 |
---|
#466 在 异步
每月141次下载
23KB
372 行
signalfut
类似于 tokio::signal::unix::Signal 的 future,但可以与
- Tokio
- async-std
- futures
- smol
- Monoio
- Glommio
- Compio
支持的平台
目前仅支持Linux和macOS。Windows也将在未来支持。
示例
在接收到 SIGINT
或 SIGQUIT
之一时打招呼
use signalfut::ctrl_c;
use signalfut::Signal;
use signalfut::SignalFut;
#[tokio::main]
async fn main() {
tokio::select! {
_ = ctrl_c() => {},
_ = SignalFut::new(Signal::SIGQUIT) => {},
}
println!("Greeting!");
}
让多个任务等待同一个信号
use signalfut::ctrl_c;
#[tokio::main]
async fn main() {
let fut1 = ctrl_c();
let fut2 = ctrl_c();
tokio::join!(fut1, fut2);
}
信号处理程序
该crate为要监视的信号分配了一个信号处理程序,因为信号处理程序由整个进程共享,不要使用其他也进行此操作的crate,它们将冲突。
分配后,不会重置默认的信号处理程序。
辅助线程和信号安全性
此crate创建一个辅助线程来执行非信号安全的代码,信号处理程序和辅助线程通过操作系统管道进行通信,信号处理程序所做的唯一一件事是 write(2)
,这是信号安全的。
依赖关系
~3MB
~60K SLoC