NAME

on_exit - 프로세스 정상 종료 때 호출되는 함수 등록하기

SYNOPSIS

#include <stdlib.h>

int on_exit(void (*function)(int, void *), void *arg);

glibc 기능 확인 매크로 요건 (feature_test_macros(7) 참고):

on_exit():
glibc 2.19부터:
_DEFAULT_SOURCE
glibc 2.19 및 이전:
_BSD_SOURCE || _SVID_SOURCE

DESCRIPTION

on_exit() 함수는 exit(3)나 프로그램 main() 반환을 통한 프로세스 정상 종료 때 호출하도록 주어진 함수 function을 등록해 둔다. 마지막 exit(3) 호출이 받은 status 인자와 on_exit()arg 인자가 function으로 전달된다.

같은 함수를 여러 번 등록할 수도 있다. 각 등록마다 한 번씩 호출된다.

fork(2)를 통해 자식 프로세스가 생성되면 부모의 등록 내용 사본을 물려받는다. exec(3) 함수들 중 하나를 성공적으로 호출하면 모든 등록 내용이 없어진다.

RETURN VALUE

on_exit() 함수는 성공 시 0 값을 반환한다. 그 외의 경우 0 아닌 값을 반환한다.

ATTRIBUTES

이 절에서 사용하는 용어들에 대한 설명은 attributes(7)를 보라.

인터페이스 속성
on_exit() 스레드 안전성 MT-Safe

CONFORMING TO

이 함수는 SunOS 4에서 생긴 것이지만 glibc에도 있다. 솔라리스(SunOS 5)에는 더이상 존재하지 않는다. 이식 가능한 응용에서는 이 함수를 피하고 대신 표준인 atexit(3)를 사용해야 한다.

NOTES

function이 실행될 때 스택(자동) 변수들이 이미 스코프를 벗어났을 수 있다. 따라서 arg가 스택 변수에 대한 포인터여선 안 된다. 힙 변수나 전역 변수에 대한 포인터는 괜찮다.

SEE ALSO

_exit(2), atexit(3), exit(3)


2021-03-22