SETJMP(3)

이름
setjmp, sigsetjmp - 비지역 탈출(non-local goto)을 위해 스택 내용(stack context)을 저장한다.

사용법
#include <setjmp.h>

int setjmp(jmp_buf env);
int sigsetjmp(sigjmp_buf env, int savesigs);

설명
setjmp()와 longjmp()는 프로그램의 하위 레벨 루틴에서 만나는 오류와 인터럽트를 처리할 때 유용하다. setjmp()는 나중에 longjmp() 함수가 사용할 수 있도록 하기 위해 env에 스택 내용과 환경 변수를 저장한다. setjmp()를 호출한 함수가 반환되었다면, 스택 내용은 무효하게 된다.

sigsetjmp()는 setjmp() 함수와 비슷하다. 만일 savesigs가 0 이 아니라면, 봉쇄된 신호 집합들은 env에 저장되고 만일 siglongjmp()가 env과 함께 나중에 작동된다면 복구된다.

반환값
setjmp() 와 sigsetjmp() 는 직접 반환된다면 0 이 반환된다. 그리고, 저장된 내용을 사용하는 longjmp()에서 반환된다면 0 이 아닌 값으로 반환된다.

호환
POSIX, ISO 9899

주의
POSIX에서는 setjmp()가 신호 내용을 저장하는지에 대해 명료하지 않다. (SYSV에서는 저장하지 않는다. DBD4.3는 저장하며, 그렇지 않는 함수 _setjmp()가 있다.) 신호 마스크를 저장하고 싶다면, sigsetjmp()를 사용하라.

setjmp()와 sigsetjmp()는 프로그램을 이해하고 유지하는데 어렵게 만든다. 다른 방법이 가능하면 그것을 사용하라.

관련 항목
longjmp(3), siglongjmp(3)

번역
정강훈 <skyeyes@soback.kornet.net> 2001년 1월 10일
한글 Manpage 프로젝트 (http://man.kldp.org) 2004년 3월 25일