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.