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