about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libstd/process.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/libstd/process.rs b/src/libstd/process.rs
index 9d21a76e81b..c99fda9febc 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::*;