LONGJMP(3)

이름
longjmp, siglongjmp - 비-지역에서 스택 문맥(stack context)이 저장된곳으로 점프한다.

사용법
#include <setjmp.h>

void longjmp(jmp_buf env, int val);
void siglongjmp(sigjmp_buf env, int val);

설명
longjmp()와 setjmp()는 프로그램의 하위-레벨 루틴에서 만나는 에러와 인터럽트를 처리할때 유용한다. longjmp()는 env 인자에 대응하는 곳에 setjmp()의 마지막 호출시 저장된 환경 변수를 복구한다. longjmp()가 끝난 후, 프로그램 실행은 setjmp()에 상응하는 호출이 val값으로 반환된 것처럼 계속한다. longjmp()는 반환되기 위해 0 으로 할수는 없다. 만일 longjmp가 두번째 인자에 0 을 가지고 호출되었다면, 대신에 1이 반환된다.

siglongjmp()는 env 인자 타입을 제외하고는 longjmp()와 비슷한다. 만일 sigsetjmp()가 0 이 아닌 savesigs 플래그를 사용한 env를 설정하고 호출되었다면, siglongjmp()는 봉쇄된 신호 집합들을 복구한다.

반환값
이 함수들은 결코 반환되지 않는다.

호환
POSIX

주의
POSIX는 longjmp가 신호 문맥을 저장하는지에 대해 명확히 하지 않는다. 만일 여러분이 신호 마스크를 저장하고 복구하길 원한다면, siglongjmp를 사용해라.

longjmp()와 siglongjmp()는 프로그램을 이해하고 유지하는데 어렵게 만든다. 선택할수 있는 것이 있다면, 그것을 사용해야 한다.

관련 항목
setjmp(3), sigsetjmp(3)

역자
정강훈 <skyeyes@soback.kornet.net>, 2001년 1월 10일