longjmp
|
ヘッダ
| #include <setjmp.h>
|
形 式
| void longjmp(jmp_buf env, int val);
|
機 能
| 同じプログラム中で対応するjmp_buf型の実引数をもち、最後に呼び出されたsetjmpマクロによって保存された環境を復元する。そのような呼出しが行われていない場合、またはsetjmpマクロ呼出しを含む関数が途中で実行を既に終了している場合、その動作は定義されない。
対応するsetjmpマクロの呼出しを含む関数中の、volatile修飾型でない自動記憶域期間をもつオブジェクトの値が、setjmp呼出しとlongjmp呼出しの間に変更された場合に不定となることを除いて、すべてのアクセス可能なオブジェクトはlongjmpが呼び出された時の値を保持する。
longjmp関数は、通常の関数呼出しおよび関数から復帰の機構を回避するので、割り込みの文脈、シグナルの文脈およびそれらと関連する関数の文脈の中でも正しく動作する。しかし、longjmp関数が、入れ子状のシグナル処理ルーチンから呼び出された場合(すなわち、別のシグナルの処理中に発生したシグナルの結果として起動された関数から呼び出された場合)の動作は定義されない
|
返却値
| longjmp関数が完了したら、対応するsetjmpマクロの呼出しがvalで指定された値をちょうど返したかのようにプログラムの実行は続行する。longjmp関数は、setjmpマクロが値0を返すようにすることはできない。valが0の場合、setjmpマクロは値1を返す。
|