OSDN Git Service

(split) LDP: Update draft and release (from the previous commit)
[linuxjm/LDP_man-pages.git] / draft / man3 / setjmp.3
index 278256f..db1c9a1 100644 (file)
@@ -72,17 +72,14 @@ _POSIX_C_SOURCE
 \fBsetjmp\fP()  は C89, C99, POSIX.1\-2001 で規定されている。 \fBsigsetjmp\fP()  は
 POSIX.1\-2001 で規定されている。
 .SH 注意
-POSIX does not specify whether \fBsetjmp\fP()  will save the signal mask (to be
-later restored during \fBlongjmp\fP(3)).  In System V it will not.  In 4.3BSD
-it will, and there is a function \fB_setjmp\fP that will not.  On Linux with
-glibc versions before 2.19, \fBsetjmp\fP()  follows the System V behavior by
-default, but the BSD behavior is provided if the \fB_BSD_SOURCE\fP feature test
-macro is defined and none of \fB_POSIX_SOURCE\fP, \fB_POSIX_C_SOURCE\fP,
-\fB_XOPEN_SOURCE\fP, \fB_XOPEN_SOURCE_EXTENDED\fP, \fB_GNU_SOURCE\fP, or
-\fB_SVID_SOURCE\fP is defined.  Since glibc 2.19, \fI<setjmp.h>\fP exposes
-only the System V version of \fBsetjmp\fP().  Programs that need the BSD
-semantics should replace calls to \fBsetjmp\fP()  with calls to \fBsigsetjmp\fP()
-with a nonzero \fIsavesigs\fP argument.
+POSIX は、 (\fBlongjmp\fP() 中で後で復元できるように) \fBsetjmp\fP() がシグナルマスクを保存すべきかどうかを規定していない。
+System V では保存しない。 4.3BSD では保存する; 4.3BSD にはシグナルコンテキストを保存しない関数 \fB_setjmp\fP もある。
+バージョン 2.19 より前の glibc を使う Linux では、 \fBsetjmp\fP() はデフォルトでは System V の振る舞いに従うが、
+\fB_BSD_SOURCE\fP 機能検査マクロが定義され、 \fB_POSIX_SOURCE\fP, \fB_POSIX_C_SOURCE\fP,
+\fB_XOPEN_SOURCE\fP, \fB_XOPEN_SOURCE_EXTENDED\fP, \fB_GNU_SOURCE\fP, \fB_SVID_SOURCE\fP
+のいずれも定義されていない時は BSD の振る舞いとなる。 glibc 2.19 以降では、 \fI<setjmp.h>\fP は
+System V 版の \fBsetjmp\fP() のみを公開するようになっている。 BSD の動作を必要とするプログラムでは、 \fBsetjmp\fP()
+の呼び出しを、 \fIsavesigs\fP 引き数に 0 以外の値を渡す \fBsigsetjmp\fP() に置き換えるべきである。
 
 移植性のある形でシグナルマスクを保存および復元したいのなら、 \fBsigsetjmp\fP()  と \fBsiglongjmp\fP(3)  を使うこと。
 .P