longjmp - ライブラリコールの説明 - Linux コマンド集 一覧表
名前
longjmp, siglongjmp - 保存されたスタックコンテキスト (stack context) へのローカルでないジャンプ
書式
#include <setjmp.h>
void longjmp(jmp_buf env, int val);void siglongjmp(sigjmp_buf env, int val);
説明
longjmp () と setjmp () は、プログラムの低レベルなサブルーチン において、エラーや割り込みが発生した時の処理に便利である。 longjmp () は、最後に呼び出された setjmp () によって保存された 環境を引き数 env にとり、これを復元する。longjmp () の終了後、 プログラムはあたかも、以前呼び出された setjmp () が値 val で 戻ってきたように続行される。longjmp () は、0 を返すことは出来ない。 もし、 longjmp () の2番目の引数が 0 として呼ばれたならば、代わりに 1 を返す。
siglongjmp () は引き数 env の型が異なるのを除いて、 longjmp () に似ている。savesigs フラグをゼロ以外に指定した sigsetjmp () コールで設定された env を使用した場合に、siglongjmp () は 阻止(block)されていたシグナルを復元する。
返り値
これらの関数は決して(呼び出し側に)返らない。
準拠
POSIX.1-2001.
注意
POSIX は、 longjmp () がシグナルコンテキスト(signal context) を保存すべきか どうか特定していない。 もし、シグナルマスクを保存/復帰させたいのなら、 siglongjmp () を使う。
longjmp () と siglongjmp () はプログラムを理解しづらく、保守し にくいものにする。別の方法が可能なら、それを使うべきである。
関連項目
setjmp
(3),
sigsetjmp
(3)