LONGJMP

Section: Linux Programmer's Manual (3)
Updated: 2007-07-26
Index JM Home Page roff page
 

名前

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 || _XOPEN_SOURCE  

説明

longjmp() と setjmp(3) は、プログラムの低レベルなサブルーチン において、エラーや割り込みが発生した時の処理に便利である。 longjmp() は、最後に呼び出された setjmp(3) によって保存された 環境を引き数 env にとり、これを復元する。 longjmp() の終了後、 プログラムはあたかも、以前呼び出された setjmp(3) が値 val で 戻ってきたように続行される。 longjmp() は、0 を返すことは出来ない。 もし、 longjmp() の2番目の引数が 0 として呼ばれたならば、代わりに 1 を返す。 siglongjmp() は引き数 env の型が異なるのを除いて、 longjmp() に似ている。savesigs フラグをゼロ以外に指定した sigsetjmp(3) コールで設定された env を使用した場合に、 siglongjmp() は 阻止(block)されていたシグナルを復元する。  

返り値

これらの関数は決して(呼び出し側に)返らない。  

準拠

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

注意

POSIX は、 longjmp() がシグナルコンテキスト(signal context) を保存すべきか どうか特定していない。 もし、シグナルマスクを保存/復帰させたいのなら、 siglongjmp() を使う。 longjmp() と siglongjmp() はプログラムを理解しづらく、保守し にくいものにする。別の方法が可能なら、それを使うべきである。  

関連項目

setjmp(3), sigsetjmp(3)


 

Index

名前
書式
説明
返り値
準拠
注意
関連項目

This document was created by man2html, using the manual pages.
Time: 04:31:50 GMT, November 19, 2007