Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all bug

名前

       setjmp, sigsetjmp - 非局所的なジャンプのために、スタックコンテキスト (stack context) を保存する

書式

       #include <setjmp.h>

       int setjmp(jmp_buf env);

       int sigsetjmp(sigjmp_buf env, int savesigs);

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

       setjmp(): 「注意」参照。
       sigsetjmp(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_C_SOURCE

説明

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

       sigsetjmp()   も setjmp()  と同様である。 savesigs が 0 以外の場合、 このプロセスの現在のシグナルマスクも
       env に保存され、 このシグナルは後で siglongjmp(3)  がこの env で実行された際に復元される。

返り値

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

準拠

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

注意

       POSIX  は、  setjmp()   がシグナルマスクを保存すべきかどうかを規定していない。  System V では保存しない。
       4.3BSD  では保存する;  4.3BSD  にはシグナルコンテキストを保存しない関数  _setjmp  もある。   デフォルトで
       は、Linux/glibc  は  System  V の振る舞いに従うが、 _BSD_SOURCE 機能検査マクロが定義され、 _POSIX_SOURCE,
       _POSIX_C_SOURCE, _XOPEN_SOURCE, _XOPEN_SOURCE_EXTENDED, _GNU_SOURCE, _SVID_SOURCE  のいずれも定義されてい
       ない時は BSD の振る舞いとなる。

       移植性のある形でシグナルマスクを保存および復元したいのなら、 sigsetjmp()  と siglongjmp(3)  を使うこと。

       setjmp()   や  sigsetjmp()  を使うと、プログラムは理解しづらく、保守しにくいものになる。 別の方法が可能な
       ら、それを使うべきである。

関連項目

       longjmp(3), siglongjmp(3)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクトの説明とバグ報告
       に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。

                                                   2009-06-26                                          SETJMP(3)