about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorSteven Fackler <sfackler@gmail.com>2016-11-17 09:31:14 -0800
committerSteven Fackler <sfackler@gmail.com>2016-11-17 16:20:08 -0800
commitfc0140d2714d06a45433bb747b4072cdc4665732 (patch)
tree70785eabe0b35770ceffb2ff7230bd415fb7030d /src/libstd
parent5bd1e7f59ffe6126db57ea94b90690d1ac39b932 (diff)
downloadrust-fc0140d2714d06a45433bb747b4072cdc4665732.tar.gz
rust-fc0140d2714d06a45433bb747b4072cdc4665732.zip
Add std::process::abort
This calls libc abort on Unix and fastfail on Windows.
Diffstat (limited to 'src/libstd')
-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::*;