◐ Shell
clean mode source ↗

std::quick_exit — cppreference.com

Материал из 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()
(функция) [править]
регистрирует функцию, которая будет вызываться при вызове std::quick_exit
(функция) [править]