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