如何中止 Rust 进程?
How do I abort a Rust process?
我正在包装一个 C 库,它执行一些可能会失败的 malloc
s。 Rust 的其余部分在 OOM 上中止,所以我也想这样做。有std::intrinsics::abort()
和core::intrinsics::abort()
(有什么区别?)但它们都不稳定。
如何使用稳定的 Rust 中止 ()?
您可以致电 panic!()
。
不过,如果你能拦截一个失败的分配,并且return到Rust处于稳定的程序状态,我觉得还是报错比较好(使用Result
等)
因为 Rust 代码通常与定义了 abort
的 C 运行时库链接,您可以使用 extern
块导入该函数:
extern {
fn abort();
}
fn main() {
unsafe { abort(); }
}
请注意,这实际上不同于 abort
内在函数:abort()
函数引发 SIGABRT
,而内在函数生成无效指令 (ud2
),这会导致SIGILL
.
希望以后std::process::abort
能稳定下来
从 Rust 1.17.0 开始,您可以调用 std::process::abort()
。
我正在包装一个 C 库,它执行一些可能会失败的 malloc
s。 Rust 的其余部分在 OOM 上中止,所以我也想这样做。有std::intrinsics::abort()
和core::intrinsics::abort()
(有什么区别?)但它们都不稳定。
如何使用稳定的 Rust 中止 ()?
您可以致电 panic!()
。
不过,如果你能拦截一个失败的分配,并且return到Rust处于稳定的程序状态,我觉得还是报错比较好(使用Result
等)
因为 Rust 代码通常与定义了 abort
的 C 运行时库链接,您可以使用 extern
块导入该函数:
extern {
fn abort();
}
fn main() {
unsafe { abort(); }
}
请注意,这实际上不同于 abort
内在函数:abort()
函数引发 SIGABRT
,而内在函数生成无效指令 (ud2
),这会导致SIGILL
.
希望以后std::process::abort
能稳定下来
从 Rust 1.17.0 开始,您可以调用 std::process::abort()
。