本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。