1 个不稳定版本
0.1.0 | 2023年9月14日 |
---|
#7 in #cortex
9KB
69 行
Cortex
Cortex 是一个针对用 Rust 编写的应用程序的灵活的崩溃处理解决方案。
示例
use subtale_cortex::CrashHandler;
fn run_application() {
// Your application logic...
}
fn crash_handler(output: std::process::Output) {
// Handle the output of the application process when it crashes
}
fn main() {
let result = CrashHandler::with_process(run_application)
.crash_handler(crash_handler)
.full_backtrace() // Use `RUST_BACKTRACE` full in your application process
.run();
match result {
Ok(true) => .., // The application process finished successfully
Ok(false) => .., // The application process crashed, but the error was handled successfully
Err(e) => .., // An error was encountered spawning the application or when crash handling
}
}
工作原理
Cortex 使用 2021 年 3 月 Mason Remaley(Anthropic Studios)在 这篇博客文章 中描述的崩溃处理方法。
崩溃处理实现简单直接:当应用程序启动时,将其再次作为自身的一个子进程调用,并监控子进程的非成功退出码。
为了避免应用程序无限递归调用自身,使用命令行参数(--cortex-child
)来识别进程是否是崩溃处理器(因此应调用子进程)或子进程。
例如,第一次运行应用程序时,Cortex 识别出没有
--cortex-child
参数。然后应用程序作为子进程自我启动,这次包含了--cortex-child
参数,以便启动正常的应用程序逻辑(如上例中的run_application()
)。
许可证
Cortex 是免费且开源的。除非明确说明,否则此存储库中的所有代码均根据 MIT 许可证 和 Apache 许可证 2.0 双重许可。
这种许可方式是 Rust 生态系统中的事实标准。
贡献
除非您明确说明,否则您根据 Apache-2.0 许可证定义的任何有意提交以包含在作品中的贡献,均将按上述方式双重许可,不附加任何额外条款或条件。