Defined in header <cstdlib> | ||
|---|---|---|
void abort(); | (until C++11) | |
[[noreturn]] void abort(); | (since C++11) |
Causes abnormal program termination unless SIGABRT is being caught by a signal handler passed to signal and the handler does not return.
Destructors of variables with automatic, thread local and static storage durations are not called. Functions passed to std::atexit() are also not called. Whether open resources such as files are closed is implementation defined. Implementation defined status is returned to the host environment that indicates unsuccessful execution.
(none).
(none).
| (none) | (until C++11) |
noexcept specification: noexcept | (since C++11) |
#include <csignal>
#include <iostream>
#include <cstdlib>
class Tester {
public:
Tester() { std::cout << "Tester ctor\n"; }
~Tester() { std::cout << "Tester dtor\n"; }
};
Tester static_tester; // Destructor not called
void signal_handler(int signal)
{
if (signal == SIGABRT) {
std::cerr << "SIGABRT received\n";
} else {
std::cerr << "Unexpected signal " << signal << " received\n";
}
std::_Exit(EXIT_FAILURE);
}
int main()
{
Tester automatic_tester; // Destructor not called
// Setup handler
auto previous_handler = std::signal(SIGABRT, signal_handler);
if (previous_handler == SIG_ERR) {
std::cerr << "Setup failed\n";
return EXIT_FAILURE;
}
std::abort(); // Raise SIGABRT
std::cout << "This code is unreachable\n";
}Output:
Tester ctor Tester ctor SIGABRT received
| causes normal program termination with cleaning up (function) |
|
registers a function to be called on std::exit() invocation (function) |
|
|
(C++11) | causes quick program termination without completely cleaning up (function) |
| sets a signal handler for particular signal (function) |
|
C documentation for abort |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/utility/program/abort