pub fn abort() -> !
Expand description
以异常方式终止进程。
该函数将永远不会返回,并会以特定于平台的 “abnormal” 方式立即终止当前进程。
请注意,由于此函数从不返回,并且终止了该进程,因此将不运行当前栈或任何其他线程的栈上的析构函数。
Rust IO 缓冲区 (例如,来自 BufWriter
) 不会被刷新。
同样,C 标准输入输出缓冲器 (在大多数平台上) 不会被刷新。
这与 panic!
的默认行为相反,后者默认情况下会展开当前线程的栈并调用所有析构函数。
设置 panic="abort"
时,无论是 rustc
的参数还是 crate 的 Cargo.toml,panic!
和 abort
都是相似的。
但是,panic!
仍然会调用 panic 钩子,而 abort
不会。
如果需要彻底关闭,建议仅在没有更多析构函数可以运行的已知点上调用此函数。
该进程的中止将类似于 C abort()
函数的中止。
在 Unix 上,进程将以信号 SIGABRT
中止,这通常意味着 shell 打印 “Aborted”。
Examples
use std::process;
fn main() {
println!("aborting");
process::abort();
// 执行永远不会到这里
}
Runabort
函数会中止该进程,因此析构函数将不会在以下示例上运行:
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();
// 为 HasDrop 实现的析构函数永远不会运行
}
Run