std::quick_exit
Материал из cppreference.com
Определено в заголовочном файле <cstdlib>
|
||
[[noreturn]] void quick_exit( int exit_code ); |
(начиная с C++11) | |
Приводит к быстрому завершению программы без полной очистки ресурсов.
Функции, переданные в std::at_quick_exit, вызываются в порядке, обратном их регистрации. Если исключение пытается распространиться за пределы любой из этих функций, вызывается std::terminate. После вызова зарегистрированных функций вызывается std::_Exit(exit_code).
Функции, переданные std::atexit, не вызываются.
Содержание |
[править] Параметры
exit_code | — | статус выхода из программы |
[править] Возвращаемое значение
(нет)
[править] Пример
Запустить этот код
#include <cstdlib> #include <iostream> template <int N> void quick_exit_handler() { std::cout << "обработчик quick_exit #" << N << std::endl; // принудительный сброс } void at_exit_handler() { std::cout << "обработчик at_exit\n"; } int main() { if ( std::at_quick_exit( quick_exit_handler<1> ) or std::at_quick_exit( quick_exit_handler<2> ) ) { std::cerr << "Регистрация не удалась\n"; return EXIT_FAILURE; } std::atexit( at_exit_handler ); // обработчик не будет вызван struct R { ~R() { std::cout << "деструктор\n"; } } resource; /*...*/ std::quick_exit( EXIT_SUCCESS ); std::cout << "Этот оператор недостижим...\n"; }
Вывод:
обработчик quick_exit #2 обработчик quick_exit #1
[править] Смотрите также
вызывает аварийное завершение программы (без очистки) (функция) | |
вызывает нормальное завершение программы с очисткой (функция) | |
регистрирует функцию, которая будет вызываться при вызове std::exit() (функция) | |
(C++11) |
регистрирует функцию, которая будет вызываться при вызове std::quick_exit (функция) |
Документация C по quick_exit
|