Namespaces
Variants

std::at_quick_exit

cppreference.net에서
 
 
유틸리티 라이브러리
일반 유틸리티
관계 연산자 (C++20에서 폐기됨)
정수 비교 함수
(C++20)(C++20)(C++20)    
(C++20)
교체 및 타입 연산
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
공통 어휘 타입
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
헤더 <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