首页 文章

如何用退出代码干净地结束程序?

提问于
浏览
27

有没有办法在Rust 1.0中返回退出代码?

我试过 env::set_exit_status(exit_code); 但这会产生编译错误 .

还有这个问题:Exit Rust program early这是类似的,但询问过程必须提前退出的情况 .


编辑:我正在寻找一个解决方案,也可以让进程整理堆栈,调用析构函数等 .

2 回答

  • 34

    Build @FrancisGagné 's answer的注释,如果你正在寻找相当于C的 return exit_code ,你可以通过这种方式人为地构建它:

    fn main() {
        let exit_code = real_main();
        std::process::exit(exit_code);
    }
    
    fn real_main() -> i32 {
        // the real program here
    }
    

    这样,程序的所有对象都将在 real_main() 函数的范围内,并且您可以安全地在 main 中使用 return exit_code; ,同时仍然可以正确运行所有析构函数 .

    使用 std::env::set_exit_status(..) 会更合适,但是这个函数还没有稳定的Rust .

  • 8

    std::process::exit使用指定的退出代码退出程序 .

相关问题