当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust abort用法及代码示例


本文简要介绍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-lang.org大神的英文原创作品 Function std::process::abort。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。