本文简要介绍rust语言中 Function std::panic::always_abort
的用法。
用法
pub fn always_abort()
使所有未来的Panics直接中止,而无需运行Panics钩子或展开。
无法撤消此操作;效果一直持续到进程退出或执行(或等效)。
分叉后使用
此函数对于在 libc::fork
之后调用特别有用。在 fork
之后,在多线程程序中(在许多平台上)调用分配器是不安全的。通常也非常不希望展开超过 fork
,因为这会导致展开传播到只希望在父级中运行的代码。
panic::always_abort()
有助于避免这两种情况。它直接避免了任何进一步的展开,如果出现Panics,只要可以在不分配的情况下格式化Panics的参数,就会发生中止而不分配。
例子
#![feature(panic_always_abort)]
use std::panic;
panic::always_abort();
let _ = panic::catch_unwind(|| {
panic!("inside the catch");
});
// We will have aborted already, due to the panic.
unreachable!();
相关用法
- Rust alloc_zeroed用法及代码示例
- Rust align_of用法及代码示例
- Rust align_of_val用法及代码示例
- Rust alloc用法及代码示例
- Rust align_of_val_raw用法及代码示例
- Rust assert_ne用法及代码示例
- Rust array.map用法及代码示例
- Rust assert_matches用法及代码示例
- Rust addr_of_mut用法及代码示例
- Rust array.split_array_ref用法及代码示例
- Rust array用法及代码示例
- Rust array.zip用法及代码示例
- Rust assert_eq用法及代码示例
- Rust array.split_array_mut用法及代码示例
- Rust available_parallelism用法及代码示例
- Rust addr_of用法及代码示例
- Rust abort用法及代码示例
- Rust array.each_mut用法及代码示例
- Rust assert用法及代码示例
- Rust array.each_ref用法及代码示例
- Rust args用法及代码示例
- Rust args_os用法及代码示例
- Rust UdpSocket.set_multicast_loop_v6用法及代码示例
- Rust i64.overflowing_add_unsigned用法及代码示例
- Rust Box.downcast用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function std::panic::always_abort。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。