tail head cat sleep
QR code linking to this page

Man page  — SETJMP

명칭

sigsetjmp, siglongjmp, setjmp, longjmp, _setjmp, _longjmp, longjmperror – 비국소 분기

내용

프로그램 라이브러리

Standard C Library (libc, -lc)

서식

#include <setjmp.h>

int
sigsetjmp(sigjmp_buf env, int savemask);

void
siglongjmp(sigjmp_buf env, int val);

int
setjmp(jmp_buf env);

void
longjmp(jmp_buf env, int val);

int
_setjmp(jmp_buf env);

void
_longjmp(jmp_buf env, int val);

void
longjmperror(void);

해설

sigsetjmp(), setjmp()_setjmp() 함수는, 호출원의 환경을 env 에 보존합니다. 이러한 함수는 모두 0 (을)를 돌려줍니다.

대응한다 longjmp() 함수는, 각각 가장 새롭다 setjmp() 함수 호출에 의해 보존된 환경을 복원합니다. longjmp() 함수는 그 후로 복귀하므로, 대응한다 setjmp() 호출이, 0 은 아니고 val 그리고 지정된 값을 돌려주었던 바로 직후인것 같이 프로그램의 실행이 계속합니다.

호출의 페어는 서로 혼합할 수 있습니다. 즉, sigsetjmp() (와)과 siglongjmp()setjmp() (와)과 longjmp() 의 각 편성은, 같은 프로그램내에서 사용할 수 있습니다. 그러나, 개개의 호출은 혼합할 수 없습니다. 예를 들어, setjmp() 에게 건네진다 env 인수는 siglongjmp() 에 건네줄 수 없습니다.

longjmp() routine는, setjmp() (을)를 호출한 routine로부터 복귀한 다음에는 호출할 수 없습니다.

액세스 가능한 오브젝트는 모두 longjmp() routine가 불려 간 시점에서의 값을 가집니다. 다만 예외로서 자동 기억역기간 계속하는 오브젝트이며, volatile 형태가 아니고, 한편 setjmp() 호출과 longjmp() 호출과의 사이에 변경되는 것에 임해서, 그 값이 부정이 되는 것은 제외합니다.

setjmp()/longjmp() 의 페어는 시그널 마스크를 보존해 복원합니다만, _setjmp()/_longjmp() 의 페어는 레지스터 세트와 스택 밖에 보존 및 복원하지 않습니다 ( sigprocmask(2) (을)를 참조 )

sigsetjmp()/siglongjmp() 함수의 페어는, 인수 savemask 하지만 0 이 아닌 경우, 시그널 마스크를 보존 및 복원합니다. 0 인 경우는, 레지스터 세트와 스택만이 보존됩니다.

에러

env 의 내용이 파괴되고 있는 경우, 또는 이미 복귀한 환경에 대응하고 있는 경우, longjmp() routine는, longjmperror(3) (을)를 호출합니다. longjmperror() (으)로부터 복귀하면(자), 프로그램은 중지합니다 ( abort(3) (을)를 참조 ) longjmperror() 의 디폴트 버젼에서는 "longjmp botch" 메세지를 표준 에러 출력에 인자해 복귀합니다. 유저 프로그램이 좀 더 예의범절 자주(잘) 탈출하는 것을 바란다면, 독자 버젼의 longjmperror() (을)를 써야 합니다.

관련 항목

sigaction(2), sigaltstack(2), signal(3)

표준

setjmp() 함수와 longjmp() 함수는 ISO/IEC 9899:1990 ("ISO C90") 에 적합하고 있습니다. sigsetjmp() 함수와 siglongjmp() 함수는 IEEE Std 1003.1-88 ("POSIX.1") 에 적합하고 있습니다.

SETJMP (3) June 4, 1993

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.

Some people, when confronted with a problem, think “I know, I'll use regular expressions.” Now they have two problems.
— Jamie Zawinski