]> git.lizzy.rs Git - rust.git/commitdiff
Add std::process::abort
authorSteven Fackler <sfackler@gmail.com>
Thu, 17 Nov 2016 17:31:14 +0000 (09:31 -0800)
committerSteven Fackler <sfackler@gmail.com>
Fri, 18 Nov 2016 00:20:08 +0000 (16:20 -0800)
This calls libc abort on Unix and fastfail on Windows.

src/libstd/process.rs

index 9d21a76e81b9e41f4e39ebe1af7fba669e002aa2..c99fda9febc245e94d5042a3e015ef65a716aa53 100644 (file)
@@ -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::*;