SETJMP

Section: Linux Programmer's Manual (3)
Updated: 2007-07-26
Index JM Home Page roff page
 

名前

setjmp, sigsetjmp - ローカルでないジャンプ (goto) のために、 スタックコンテキスト (stack context) を保存する  

書式

#include <setjmp.h>

int setjmp(jmp_buf env);
int sigsetjmp(sigjmp_buf env, int savesigs);

glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):

sigsetjmp(): _POSIX_C_SOURCE || _XOPEN_SOURCE  

説明

setjmp() と longjmp(3) は、プログラムの低レベルなサブルーチン において、エラーや割り込みが発生した時の処理に便利である。 setjmp() は、 longjmp(3) によって使われる env に スタックコンテキスト/スタック環境を保存する。 setjmp() を呼び出した 関数が返るとき、スタックコンテキストは無効になる。 sigsetjmp() は setjmp() に似ている。 もし、 savesigs がゼロでないなら、阻止(block)されているシグナルも env に保存され、 後に siglongjmp(3) が env とともに行われたなら、元に戻される。  

返り値

直接返ってくるときは、 setjmp() と sigsetjmp() は 0 を返し、 コンテキストを保存した longjmp(3) から返ってくるときは、ゼロ以外を返す。  

準拠

setjmp() は C89, C99, POSIX.1-2001 で規定されている。 sigsetjmp() は POSIX.1-2001 で規定されている。  

注意

POSIX は、 setjmp() がシグナルコンテキスト(signal context) を保存すべきか どうかを指定していない (System V では保存しない。 4.3BSD では保存する。 4.3BSD には保存しない関数 _setjmp もある)。 もし、シグナルマスクを保存したいのなら、 sigsetjmp() を使うこと。 setjmp() と sigsetjmp() はプログラムを理解しづらく、保守し にくいものにする。 別の方法が可能なら、それを使うべきである。  

関連項目

longjmp(3), siglongjmp(3)


 

Index

名前
書式
説明
返り値
準拠
注意
関連項目

This document was created by man2html, using the manual pages.
Time: 04:32:02 GMT, November 19, 2007