SETJMP
Section: C Library Functions (3)
索引
jman
BSD mandoc
索引
名称
sigsetjmp
siglongjmp
setjmp
longjmp
_setjmp
_longjmp
longjmperror
- 非局所分岐
索引
ライブラリ
Lb libc
索引
書式
In setjmp.h
Ft int
Fn sigsetjmp sigjmp_buf env int savemask
Ft void
Fn siglongjmp sigjmp_buf env int val
Ft int
Fn setjmp jmp_buf env
Ft void
Fn longjmp jmp_buf env int val
Ft int
Fn _setjmp jmp_buf env
Ft void
Fn _longjmp jmp_buf env int val
Ft void
Fn longjmperror void
索引
解説
Fn sigsetjmp ,
Fn setjmp
および
Fn _setjmp
関数は、呼び出し元の環境を
Fa env
に保存します。これらの関数はどれも
0
を返します。
対応する
Fn longjmp
関数は、それぞれ最も新しい
Fn setjmp
関数呼び出しによって保存された環境を復元します。
Fn longjmp
関数はその後で復帰するので、対応する
Fn setjmp
呼び出しが、0 ではなく
Fa val
で指定された値を返したばかりであるかのように
プログラムの実行が継続します。
呼び出しのペアはお互いに混合できます。すなわち、
Fn sigsetjmp
と
Fn siglongjmp
および
Fn setjmp
と
Fn longjmp
の各組み合わせは、同じプログラム内で使用できます。
しかし、個々の呼び出しは混合することはできません。
たとえば、
Fn setjmp
に渡される
Fa env
引数は
Fn siglongjmp
に渡すことはできません。
Fn longjmp
ルーチンは、
Fn setjmp
を呼び出したルーチンから復帰した後では
呼び出すことはできません。
アクセス可能なオブジェクトはすべて
Fn longjmp
ルーチンが呼び出された時点での値を持ちます。
ただし例外として、自動記憶域期間継続するオブジェクトであり、
volatile
型ではなく、かつ
Fn setjmp
呼び出しと
Fn longjmp
呼び出しとの間で変更されるものについて、
その値が不定になることは除きます。
Fn setjmp Ns / Ns Fn longjmp
のペアはシグナルマスクを保存し復元しますが、
Fn _setjmp Ns / Ns Fn _longjmp
のペアはレジスタセットとスタックしか保存および復元しません
(
Fn sigprocmask 2
を参照
)
。
Fn sigsetjmp Ns / Ns Fn siglongjmp
関数のペアは、引数
Fa savemask
が 0 でない場合、シグナルマスクを保存および復元します。
0 である場合は、レジスタセットとスタックのみが保存されます。
索引
エラー
Fa env
の内容が破壊されている場合、または既に復帰した環境に対応している場合、
Fn longjmp
ルーチンは、
Fn longjmperror 3
を呼び出します。
Fn longjmperror
から復帰すると、プログラムは中止します
(
abort(3)
を参照
)
。
Fn longjmperror
のデフォルトバージョンでは
``longjmp botch
''
メッセージを標準エラー出力に印字して復帰します。
ユーザプログラムがもっと行儀よく脱出することを望むなら、
独自バージョンの
Fn longjmperror
を書くべきです。
索引
関連項目
sigaction(2),
sigaltstack(2),
signal(3)
索引
規格
Fn setjmp
関数と
Fn longjmp
関数は
St -isoC
に適合しています。
Fn sigsetjmp
関数と
Fn siglongjmp
関数は
St -p1003.1-88
に適合しています。
索引
Index
- 名称
-
- ライブラリ
-
- 書式
-
- 解説
-
- エラー
-
- 関連項目
-
- 規格
-
Time: 07:06:59 GMT, January 12, 2009