Пространства имён
Варианты
Действия

std::quick_exit

Материал из cppreference.com
< cpp‎ | utility‎ | program
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм(C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования(C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Утилиты поддержки программ
Прерывание программы
quick_exit
(C++11)
(C++11)
Недостижимый поток управления
Взаимодействие с окружением
Сигналы
Типы сигналов
Нелокальные переходы
Типы
 
Определено в заголовочном файле <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";returnEXIT_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
(функция)[править]
close