Namespaces
Variants

at_quick_exit

From cppreference.net
Определено в заголовочном файле <stdlib.h>
int at_quick_exit ( void ( * func ) ( void ) ) ;
(начиная с C11)

Регистрирует функцию, на которую указывает func , для вызова при быстром завершении программы (через quick_exit ).

Вызов функции из нескольких потоков не вызывает состояние гонки данных. Реализация гарантированно поддерживает регистрацию как минимум 32 функций. Точный предел определяется реализацией.

Зарегистрированные функции не будут вызваны при нормальном завершении программы . Если функция должна быть вызвана в этом случае, atexit должен быть использован.

Содержание

Параметры

func - указатель на функцию, вызываемую при быстром завершении программы

Возвращаемое значение

0 если регистрация прошла успешно, в противном случае - ненулевое значение.

Пример

#include <stdlib.h>
#include <stdio.h>
void f1(void)
{
    puts("pushed first");
    fflush(stdout);
}
void f2(void)
{
    puts("pushed second");
}
int main(void)
{
    at_quick_exit(f1);
    at_quick_exit(f2);
    quick_exit(0);
}

Вывод:

pushed second
pushed first

Ссылки

  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.22.4.3 Функция at_quick_exit (стр: 255)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.22.4.3 Функция at_quick_exit (стр. 351)

Смотрите также

вызывает аварийное завершение программы (без очистки)
(функция)
вызывает нормальное завершение программы с очисткой
(функция)
регистрирует функцию для вызова при exit() вызове
(функция)
вызывает нормальное завершение программы без полной очистки
(функция)
C++ documentation для at_quick_exit