From fc0140d2714d06a45433bb747b4072cdc4665732 Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Thu, 17 Nov 2016 09:31:14 -0800 Subject: [PATCH] Add std::process::abort This calls libc abort on Unix and fastfail on Windows. --- src/libstd/process.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/libstd/process.rs b/src/libstd/process.rs index 9d21a76e81b9e..c99fda9febc24 100644 --- a/src/libstd/process.rs +++ b/src/libstd/process.rs @@ -825,6 +825,21 @@ pub fn exit(code: i32) -> ! { ::sys::os::exit(code) } +/// Terminates the process in an abnormal fashion. +/// +/// The function will never return and will immediately terminate the current +/// process in a platform specific "abnormal" manner. +/// +/// Note that because this function never returns, and that it terminates the +/// process, no destructors on the current stack or any other thread's stack +/// will be run. If a clean shutdown is needed it is recommended to only call +/// this function at a known point where there are no more destructors left +/// to run. +#[unstable(feature = "process_abort", issue = "37838")] +pub fn abort() -> ! { + unsafe { ::sys::abort_internal() }; +} + #[cfg(all(test, not(target_os = "emscripten")))] mod tests { use io::prelude::*;