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

名前

       longjmp, siglongjmp - 保存されたスタックコンテキスト (stack context)  への非局所的なジャン
       プ

書式

       #include <setjmp.h>

       void longjmp(jmp_buf env, int val);

       void siglongjmp(sigjmp_buf env, int val);

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

       siglongjmp(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_C_SOURCE

説明

       longjmp()  と setjmp(3)  は、プログラムの低レベルなサブルーチンにおいて、 エラーや割り込み
       が発生した時の処理に便利である。   longjmp()   は、env  引き数を指定して呼び出された最後の
       setjmp(3)  によって保存された環境を復元する。 longjmp()   の完了後、プログラムの実行は、ま
       るで対応する  setjmp(3)  の呼び出しが値 val で返って来たかように続行される。 longjmp()  は
       0 を返すように指示することはできない。 二番目の引き数に 0 を指定して longjmp()  が呼ばれた
       場合は、代わりに 1 が返されることになる。

       siglongjmp()  は、引き数 env の型が異なる点以外は、 longjmp()  と同様である。 env を保存し
       た sigsetjmp(3)  が 0 以外の savesigs フラグで呼び出されていた場合で、  かつ、その場合にの
       み、 siglongjmp(3)  は sigsetjmp(3)  より保存されていたシグナルマスクの復元を行う。

返り値

       これらの関数が返ることはない。

準拠

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

注意

       POSIX では、 longjmp() がシグナルコンテキスト (signal context) を復元 するかどうか規定され
       ていない (setjmp(3) にも少し詳しい情報がある)。 移植性のある方法で、シグナルマスクを保存し
       復元させたい場合には、 sigsetjmp(3) と siglongjmp() を使うこと。

       以下の条件が全て成立する場合、   longjmp()    の呼び出しが行われた後の自動変数の値は未定義
       (unspecified) となる。

       •  その自動変数が、対応する setjmp(3)  呼び出しを行った関数のローカル変数である。

       •  自動変数の値が setjmp(3)  と longjmp()  の間で変更されている。

       •  volatile として宣言されていない。

       同様の注意が siglongjmp()  にもあてはまる。

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

関連項目

       setjmp(3), sigsetjmp(3)

この文書について

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

                                            2009-01-13                                 LONGJMP(3)