diff options
| author | bors <bors@rust-lang.org> | 2016-11-19 20:01:52 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-11-19 20:01:52 -0600 |
| commit | 7c535c6ec688fba62ba50e4cd156b3ea8d01d57a (patch) | |
| tree | e6260b549783ff034bc6f1b13d72033f39ff55f3 /src/libstd | |
| parent | 0bd2ce62b27e2b9a7dfe92fc23d9098854008089 (diff) | |
| parent | fc0140d2714d06a45433bb747b4072cdc4665732 (diff) | |
| download | rust-7c535c6ec688fba62ba50e4cd156b3ea8d01d57a.tar.gz rust-7c535c6ec688fba62ba50e4cd156b3ea8d01d57a.zip | |
Auto merge of #37833 - sfackler:process-abort, r=alexcrichton
Add std::process::abort This calls libc abort on Unix and fastfail on Windows, first running cleanups to do things like flush stdout buffers. This matches with libc abort's behavior, which flushes open files. r? @alexcrichton
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/process.rs | 15 |
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::*; |
