SETJMP(3) | 라이브러리 함수 | 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()는 프로그램을 이해하고 유지하는데 어렵게 만든다. 다른 방법이 가능하면 그것을 사용하라.
관련 항목¶
번역¶
정강훈 <skyeyes@soback.kornet.net>
2001년 1월 10일
한글 Manpage 프로젝트
(http://man.kldp.org) 2004년 3월 25일
1997년 3월 2일 |