|
HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > s > setjmp - ライブラリコールの説明 setjmp - ライブラリコールの説明 - Linux コマンド集 一覧表名前setjmp, sigsetjmp - ローカルでないジャンプ (goto) のために、 スタックコンテキスト (stack context) を保存する 書式
#include <setjmp.h>
int setjmp(jmp_buf env);int sigsetjmp(sigjmp_buf env, int savesigs); 説明setjmp () と longjmp () は、プログラムの低レベルなサブルーチン において、エラーや割り込みが発生した時の処理に便利である。 setjmp () は、longjmp () によって使われる env に スタックコンテキスト/スタック環境を保存する。 setjmp () を呼び出した 関数が返るとき、スタックコンテキストは無効になる。 sigsetjmp () は setjmp () に似ている。 もし、 savesigs がゼロでないなら、阻止(block)されているシグナルも env に保存され、 後に siglongjmp () が env とともに行われたなら、元に戻される。 返り値直接返ってくるときは、setjmp () と sigsetjmp () は 0 を返し、 コンテキストを保存した longjmp () から返ってくるときは、ゼロ以外を返す。 準拠POSIX.1-2001, C99 注意POSIX は、 setjmp () がシグナルコンテキスト(signal context) を保存すべきか どうかを指定していない (System V では保存しない。 4.3BSD では保存する。 4.3BSD には保存しない関数 _setjmp もある)。 もし、シグナルマスクを保存したいのなら、sigsetjmp () を使うこと。 setjmp () と sigsetjmp () はプログラムを理解しづらく、保守し にくいものにする。 別の方法が可能なら、それを使うべきである。 関連項目
longjmp
(3),
siglongjmp
(3)
|
|