Namespaces
Variants

std:: at_quick_exit

From cppreference.net
Utilities library
헤더 파일에 정의됨 <cstdlib>
int at_quick_exit ( /*atexit-handler*/ * func ) noexcept ;
int at_quick_exit ( /*c-atexit-handler*/ * func ) noexcept ;
(1) (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 등록이 성공하면 0, 그렇지 않으면 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

참고 항목

비정상적인 프로그램 종료를 유발합니다 (정리 작업 없음)
(function)
정리 작업과 함께 정상적인 프로그램 종료를 유발합니다
(function)
std::exit() 호출 시 실행될 함수를 등록합니다
(function)
(C++11)
완전한 정리 작업 없이 빠른 프로그램 종료를 유발합니다
(function)
C documentation for at_quick_exit