aboutsummaryrefslogtreecommitdiff
path: root/documentation/manual-pages/ja/man3/setjmp.3
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/manual-pages/ja/man3/setjmp.3')
-rw-r--r--documentation/manual-pages/ja/man3/setjmp.3185
1 files changed, 185 insertions, 0 deletions
diff --git a/documentation/manual-pages/ja/man3/setjmp.3 b/documentation/manual-pages/ja/man3/setjmp.3
new file mode 100644
index 0000000000..4d56462219
--- /dev/null
+++ b/documentation/manual-pages/ja/man3/setjmp.3
@@ -0,0 +1,185 @@
+.\" Copyright (c) 1990, 1991, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" the American National Standards Committee X3, on Information
+.\" Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)setjmp.3 8.1 (Berkeley) 6/4/93
+.\" %FreeBSD: src/lib/libc/gen/setjmp.3,v 1.5.2.4 2001/12/14 18:33:51 ru Exp %
+.\" WORD: automatic storage invocation duration 自動記憶域期間 [JIS C]
+.\" WORD: gracefully 行儀よく [doc-jp]
+.\"
+.\" $FreeBSD$
+.Dd June 4, 1993
+.Dt SETJMP 3
+.Os
+.Sh 名称
+.Nm sigsetjmp ,
+.Nm siglongjmp ,
+.Nm setjmp ,
+.Nm longjmp ,
+.Nm _setjmp ,
+.Nm _longjmp ,
+.Nm longjmperror
+.Nd 非局所分岐
+.Sh ライブラリ
+.Lb libc
+.Sh 書式
+.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
+.Sh 解説
+.Fn sigsetjmp ,
+.Fn setjmp
+および
+.Fn _setjmp
+関数は、呼び出し元の環境を
+.Fa env
+に保存します。これらの関数はどれも
+0
+を返します。
+.Pp
+対応する
+.Fn longjmp
+関数は、それぞれ最も新しい
+.Fn setjmp
+関数呼び出しによって保存された環境を復元します。
+.Fn longjmp
+関数はその後で復帰するので、対応する
+.Fn setjmp
+呼び出しが、0 ではなく
+.Fa val
+で指定された値を返したばかりであるかのように
+プログラムの実行が継続します。
+.Pp
+呼び出しのペアはお互いに混合できます。すなわち、
+.Fn sigsetjmp
+と
+.Fn siglongjmp
+および
+.Fn setjmp
+と
+.Fn longjmp
+の各組み合わせは、同じプログラム内で使用できます。
+しかし、個々の呼び出しは混合することはできません。
+たとえば、
+.Fn setjmp
+に渡される
+.Fa env
+引数は
+.Fn siglongjmp
+に渡すことはできません。
+.Pp
+.Fn longjmp
+ルーチンは、
+.Fn setjmp
+を呼び出したルーチンから復帰した後では
+呼び出すことはできません。
+.Pp
+アクセス可能なオブジェクトはすべて
+.Fn longjmp
+ルーチンが呼び出された時点での値を持ちます。
+ただし例外として、自動記憶域期間継続するオブジェクトであり、
+.Em volatile
+型ではなく、かつ
+.Fn setjmp
+呼び出しと
+.Fn longjmp
+呼び出しとの間で変更されるものについて、
+その値が不定になることは除きます。
+.Pp
+.Fn setjmp Ns / Ns Fn longjmp
+のペアはシグナルマスクを保存し復元しますが、
+.Fn _setjmp Ns / Ns Fn _longjmp
+のペアはレジスタセットとスタックしか保存および復元しません
+(
+.Fn sigprocmask 2
+を参照
+)
+。
+.Pp
+.Fn sigsetjmp Ns / Ns Fn siglongjmp
+関数のペアは、引数
+.Fa savemask
+が 0 でない場合、シグナルマスクを保存および復元します。
+0 である場合は、レジスタセットとスタックのみが保存されます。
+.Sh エラー
+.Fa env
+の内容が破壊されている場合、または既に復帰した環境に対応している場合、
+.Fn longjmp
+ルーチンは、
+.Fn longjmperror 3
+を呼び出します。
+.Fn longjmperror
+から復帰すると、プログラムは中止します
+(
+.Xr abort 3
+を参照
+)
+。
+.Fn longjmperror
+のデフォルトバージョンでは
+.Dq Li longjmp botch
+メッセージを標準エラー出力に印字して復帰します。
+ユーザプログラムがもっと行儀よく脱出することを望むなら、
+独自バージョンの
+.Fn longjmperror
+を書くべきです。
+.Sh 関連項目
+.Xr sigaction 2 ,
+.Xr sigaltstack 2 ,
+.Xr signal 3
+.Sh 規格
+.Fn setjmp
+関数と
+.Fn longjmp
+関数は
+.St -isoC
+に適合しています。
+.Fn sigsetjmp
+関数と
+.Fn siglongjmp
+関数は
+.St -p1003.1-88
+に適合しています。