std::quick_exit
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <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
| |