本文简要介绍rust语言中 Function std::process::abort
的用法。
用法
pub fn abort() -> !
以异常方式终止进程。
该函数将永远不会返回,并将立即以特定于平台的“abnormal” 方式终止当前进程。
请注意,因为这个函数永远不会返回,并且它会终止进程,所以不会运行当前堆栈或任何其他线程的堆栈上的析构函数。
Rust IO 缓冲区(例如,来自 BufWriter
)将不会被刷新。同样,C stdio 缓冲区(在大多数平台上)不会被刷新。
这与 panic!
的默认行为相反, panic!
展开当前线程的堆栈并调用所有析构函数。当 panic="abort"
设置时,无论是作为 rustc
的参数还是在 crate 的 Cargo.toml 中, panic!
和 abort
是相似的。但是, panic!
仍会调用 panic hook,而 abort
则不会。
如果需要彻底关闭,建议仅在没有更多析构函数可以运行的已知点调用此函数。
该进程的终止将类似于 Cabort()
函数的终止。在 Unix 上,进程将以信号 SIGABRT
终止,这通常意味着 shell 打印 “Aborted”。
例子
use std::process;
fn main() {
println!("aborting");
process::abort();
// execution never gets here
}
abort
函数终止进程,因此析构函数不会在以下示例中运行:
use std::process;
struct HasDrop;
impl Drop for HasDrop {
fn drop(&mut self) {
println!("This will never be printed!");
}
}
fn main() {
let _x = HasDrop;
process::abort();
// the destructor implemented for HasDrop will never get run
}
相关用法
- Rust assert_ne用法及代码示例
- Rust array.map用法及代码示例
- Rust assert_matches用法及代码示例
- Rust addr_of_mut用法及代码示例
- Rust alloc_zeroed用法及代码示例
- Rust array.split_array_ref用法及代码示例
- Rust array用法及代码示例
- Rust array.zip用法及代码示例
- Rust align_of用法及代码示例
- Rust always_abort用法及代码示例
- Rust assert_eq用法及代码示例
- Rust array.split_array_mut用法及代码示例
- Rust available_parallelism用法及代码示例
- Rust addr_of用法及代码示例
- Rust align_of_val用法及代码示例
- Rust array.each_mut用法及代码示例
- Rust assert用法及代码示例
- Rust array.each_ref用法及代码示例
- Rust args用法及代码示例
- Rust alloc用法及代码示例
- Rust args_os用法及代码示例
- Rust align_of_val_raw用法及代码示例
- Rust UdpSocket.set_multicast_loop_v6用法及代码示例
- Rust i64.overflowing_add_unsigned用法及代码示例
- Rust Box.downcast用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function std::process::abort。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。