13个版本 (1个稳定版本)
1.0.0 | 2021年5月19日 |
---|---|
0.3.0 | 2020年12月21日 |
0.2.2 | 2020年12月21日 |
0.1.8 | 2020年12月15日 |
#173 in 无标准库
每月24次下载
17KB
89 行
simple_on_shutdown
该crate包含一个方便的宏,用于指定在程序退出时(优雅地)应该运行的代码的回调,称为on_shutdown!
。它接受程序退出时应执行的代码。有关更多信息,请参阅https://docs.rs/simple_on_shutdown。
适用于"无法控制的运行时",例如,例如actix-web框架不允许您自己指定关闭回调。在这种情况下,我的宏可能是一个更好的选择。
使用方法
推荐
use simple_on_shutdown::on_shutdown;
fn main() {
// macro can take: direct expression
on_shutdown!(println!("shut down with success"));
// closure expression
on_shutdown!(|| println!("shut down with success"));
// move closure expression
on_shutdown!(move || println!("shut down with success"));
// block
on_shutdown!({ println!("shut down with success") });
// identifier
let identifier = || println!("shut down with success");
on_shutdown!(identifier);
}
示例
⚠ 限制 ⚠
- 无法保证在“非常规”关闭场景中执行,如
CTRL+C / SIGINT / SIGTERM
- 您的应用程序必须正确处理
SIGINT/SIGTERM
(以及其他信号),以允许优雅地“非常规”关闭(例如,Actix web框架就是这样做的)- 即,如果您不处理信号
CTRL+C
将立即关闭您的应用程序
- 即,如果您不处理信号
- 即使在那种情况下:也无法保证在每次操作系统中在应用程序(强制)被终止后都会给予应用程序更多时间
- 这种行为在Windows和UNIX之间略有不同。有关更多详细信息,请参阅
example/src/bin/simple_example_ctrl_c_signal
。