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

名称
ライブラリ
書式
解説
エラー
関連項目
規格

jman



Time: 07:07:07 GMT, January 12, 2009