std::quick_exit
Von cppreference.com
| Definiert in Header <cstdlib> |
||
| [[noreturn]] void quick_exit( int exit_code ) noexcept; |
(seit C++11) | |
Verursacht die normale Programmbeendigung, ohne die Ressourcen vollständig zu bereinigen.
Funktionen, die an std::at_quick_exit übergeben werden, werden in umgekehrter Reihenfolge ihrer Registrierung aufgerufen. Wenn eine Ausnahme versucht, aus einer der Funktionen zu propagieren, wird std::terminate aufgerufen. Nach dem Aufruf der registrierten Funktionen wird std::_Exit(exit_code) aufgerufen.
An std::atexit übergebene Funktionen werden nicht aufgerufen.
Inhalt |
[bearbeiten] Parameter
| exit_code | - | Beendigungsstatus des Programms |
[bearbeiten] Rückgabewert
(keine)
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <cstdlib> #include <iostream> template<int N> void quick_exit_handler() { std::cout << "quick_exit handler #" << N << std::endl; // flush is intended } void at_exit_handler() { std::cout << "at_exit handler\n"; } int main() { if (std::at_quick_exit(quick_exit_handler<1>) || std::at_quick_exit(quick_exit_handler<2>)) { std::cerr << "Registration failed\n"; return EXIT_FAILURE; } std::atexit(at_exit_handler); // the handler will not be called struct R { ~R() { std::cout << "destructor\n"; } } resource; /*...*/ std::quick_exit(EXIT_SUCCESS); std::cout << "This statement is unreachable...\n"; }
Ausgabe
quick_exit handler #2 quick_exit handler #1
[bearbeiten] Siehe auch
| verursacht abnormalen Programmabbruch (ohne Bereinigung) (funktion) | |
| verursacht normalen Programmabbruch mit Bereinigung (funktion) | |
| registriert eine Funktion, die bei Aufruf von std::exit() aufgerufen wird (funktion) | |
| (C++11) |
registriert eine Funktion, die beim Aufruf von std::quick_exit aufgerufen wird (funktion) |
| C-Dokumentation für quick_exit
| |