이 름
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()는 프 로 그 램 을 이 해 하 고 유 지 하 는 데 어 렵 게 만 든 다 . 선 택 할 수 있 는 것 이 있 다 면 , 그 것 을 사 용 해 야 한 다 .
관 련 항 목
역 자
정 강 훈 <skyeyes [AT] soback.net>, 2001년 1월 10일