std::at_quick_exit
Defined in header <cstdlib> |
||
|---|---|---|
int at_quick_exit( /*atexit-handler*/* func ) noexcept; int at_quick_exit( /*c-atexit-handler*/* func ) noexcept; |
(1) | (since C++11) |
extern "C++" using /*atexit-handler*/ = void(); extern "C" using /*c-atexit-handler*/ = void(); |
(2) | (только для примера*) |
Регистрирует функцию, на которую указывает func, для вызова при быстрой завершении программы (с помощью std::quick_exit).
Вызов функции из нескольких потоков не приводит к гонке данных. Реализация гарантирует поддержку регистрации не менее 32 функций. Точный предел определяется реализацией.
Зарегистрированные функции не будут вызываться при нормальном завершении программы. Если функцию нужно вызвать в этом случае, следует использовать std::atexit.
Параметры
| func | - | указатель на функцию, которая будет вызвана при быстром завершении программы |
Возвращаемое значение
0 в случае успешной регистрации, ненулевое значение в противном случае.
Примечания
Два перегрузки отличаются, поскольку типы параметра func отличаются (связь с языком является частью его типа).
Пример
#include <cstdlib>
#include <iostream>
void f1()
{
std::cout << "pushed first" << std::endl; // flush is intentional
}
extern "C" void f2()
{
std::cout << "pushed second\n";
}
int main()
{
auto f3 = []
{
std::cout << "pushed third\n";
};
std::at_quick_exit(f1);
std::at_quick_exit(f2);
std::at_quick_exit(f3);
std::quick_exit(0);
}Вывод:
pushed third pushed second pushed first
См. также
| вызывает аномальное завершение программы (без очистки) (функция) |
|
| вызывает нормальное завершение программы с очисткой (функция) |
|
регистрирует функцию, которая будет вызвана при std::exit() вызове (функция) |
|
|
(C++11) |
вызывает быстрое завершение программы без полной очистки (функция) |
Документация C для at_quick_exit |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/program/at_quick_exit