.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH SIGNAL 2 2013\-02\-09 Linux "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
+.\" all rights reserved.
+.\" Translated 1997-03-03, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
+.\" Modified 2000-09-24, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
+.\" Updated & Modified 2002-01-14, Yuichi SATO <ysato@h4.dion.ne.jp>
+.\" Updated & Modified 2004-01-17, Yuichi SATO <ysato444@yahoo.co.jp>
+.\" Updated & Modified 2005-01-07, Yuichi SATO
+.\" Updated 2007-06-01, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.50
+.\" Updated 2007-06-13, Akihiro MOTOKI, LDP v2.55
+.\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05
+.\" Updated 2012-05-29, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-07-22, Akihiro MOTOKI <amotoki@gmail.com>
+.\"
+.TH SIGNAL 2 2014\-08\-19 Linux "Linux Programmer's Manual"
.SH 名前
signal \- ANSI C シグナル操作
.SH 書式
\fBこのシステムコールの使用は避け、\fP 代わりに \fBsigaction\fP(2) を使用すること。 下記の「移植性」を参照。
\fBsignal\fP() はシグナル \fIsignum\fP の処理方法を \fIhandler\fP に設定する。 \fIhandler\fP には、
-\fBSIG_IGN\fPã\80\81 \fBSIG_DFL\fPã\80\81 ã\83\97ã\83ã\82°ã\83©ã\83\9eã\81\8cå®\9a義ã\81\97ã\81\9fé\96¢æ\95° (ã\80\8cã\82·ã\82°ã\83\8aã\83«ã\83»ã\83\8fã\83³ã\83\89ã\83©」) のアドレスの いずれかを指定する。
+\fBSIG_IGN\fPã\80\81 \fBSIG_DFL\fPã\80\81 ã\83\97ã\83ã\82°ã\83©ã\83\9eã\81\8cå®\9a義ã\81\97ã\81\9fé\96¢æ\95° (ã\80\8cã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼」) のアドレスの いずれかを指定する。
シグナル \fIsignum\fP がプロセスに配送されると、以下のいずれかが発生する。
.TP 3
.TP
*
処理方法として関数が設定されている場合、 まず最初に処理方法が \fBSIG_DFL\fP にリセットされるかそのシグナルのブロックが実行された後、
-\fIsignum\fP を引き数として \fIhandler\fP が呼び出される。 ハンドラが起動される際にシグナルがブロックされた場合、
-ハンドラが返る際にそのシグナルのブロックが解除される。
+\fIsignum\fP ã\82\92å¼\95ã\81\8dæ\95°ã\81¨ã\81\97ã\81¦ \fIhandler\fP ã\81\8cå\91¼ã\81³å\87ºã\81\95ã\82\8cã\82\8bã\80\82 ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81\8cèµ·å\8b\95ã\81\95ã\82\8cã\82\8bé\9a\9bã\81«ã\82·ã\82°ã\83\8aã\83«ã\81\8cã\83\96ã\83ã\83\83ã\82¯ã\81\95ã\82\8cã\81\9få ´å\90\88ã\80\81
+ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81\8cè¿\94ã\82\8bé\9a\9bã\81«ã\81\9dã\81®ã\82·ã\82°ã\83\8aã\83«ã\81®ã\83\96ã\83ã\83\83ã\82¯ã\81\8c解é\99¤ã\81\95ã\82\8cã\82\8bã\80\82
.PP
シグナル \fBSIGKILL\fP と \fBSIGSTOP\fP は捕捉できず、無視することもできない。
.SH 返り値
-\fBsignal\fP() は、今までのシグナル・ハンドラの値を返す。エラーの場合は \fBSIG_ERR\fP を返す。
+\fBsignal\fP() は、今までのシグナルハンドラーの値を返す。 エラーの場合は \fBSIG_ERR\fP を返し、 \fIerrno\fP
+にエラーの原因を示す値を設定する。
.SH エラー
.TP
\fBEINVAL\fP
.PP
\fBSIGCHLD\fP の動作として \fBSIG_IGN\fP を設定した場合の詳細な動作については、 \fBsigaction\fP(2) を参照すること。
.PP
-ã\82·ã\82°ã\83\8aã\83«ã\83»ã\83\8fã\83³ã\83\89ã\83©内から安全に呼び出すことができる、 async\-signal\-safe functions (非同期シングルで安全な関数) の
+ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼内から安全に呼び出すことができる、 async\-signal\-safe functions (非同期シングルで安全な関数) の
リストについては \fBsignal\fP(7) を参照。
.PP
.\" libc4 and libc5 define
.\" .IR SignalHandler ;
-\fIsighandler_t\fP の使用は GNU 拡張であり、 \fB_GNU_SOURCE\fP が定義された
-場合に公開される。glibc では \fB_BSD_SOURCE\fP が定義された場合には (BSD
-由来の) \fIsig_t\fP も定義される。このような型を使用しないと、
+\fIsighandler_t\fP の使用は GNU 拡張であり、 \fB_GNU_SOURCE\fP が定義された場合に公開される。glibc では
+\fB_BSD_SOURCE\fP が定義された場合には (BSD 由来の) \fIsig_t\fP も定義される。このような型を使用しないと、
\fBsignal\fP() の宣言は読みにくいものとなる。
.in +4n
.nf
.in
.SS 移植性
移植性のある \fBsignal\fP() の使い方は、シグナルの処理方法を \fBSIG_DFL\fP か \fBSIG_IGN\fP に設定する方法だけである。
-ã\82·ã\82°ã\83\8aã\83«ã\83»ã\83\8fã\83³ã\83\89ã\83©を設定するのに \fBsignal\fP() を使ったときの動作はシステムにより異なる (POSIX.1
+ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼を設定するのに \fBsignal\fP() を使ったときの動作はシステムにより異なる (POSIX.1
は明示的にこの違いを認めている)。 \fB移植性が必要なときはこのシステムコールを使用しないこと。\fP
POSIX.1 は、 \fBsigaction\fP(2) を規定することで移植性に関する混乱を解決した。 \fBsigaction\fP(2)
-ã\81¯ã\82·ã\82°ã\83\8aã\83«ã\83»ã\83\8fã\83³ã\83\89ã\83©が起動される際の挙動を明示的に制御できる。 \fBsignal\fP() の代わりにこのインターフェイスを使うこと。
+ã\81¯ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼が起動される際の挙動を明示的に制御できる。 \fBsignal\fP() の代わりにこのインターフェイスを使うこと。
-In the original UNIX systems, when a handler that was established using
-\fBsignal\fP() was invoked by the delivery of a signal, the disposition of the
-signal would be reset to \fBSIG_DFL\fP, and the system did not block delivery
-of further instances of the signal. This is equivalent to calling
-\fBsigaction\fP(2) with the following flags:
+オリジナルの UNIX システムでは、 \fBsignal\fP() を使って設定されたハンドラーがシグナルの配送により起動されると、
+そのシグナルの処理方法は \fBSIG_DFL\fP にリセットされ、システムは同じシグナルがさらに生成されても
+シグナルの配送をブロックしなかった。これは、以下のフラグで \fBsigaction\fP(2) を呼び出すのと等価である。
sa.sa_flags = SA_RESETHAND | SA_NODEFER;
-System V also provides these semantics for \fBsignal\fP(). This was bad
-because the signal might be delivered again before the handler had a chance
-to reestablish itself. Furthermore, rapid deliveries of the same signal
-could result in recursive invocations of the handler.
+System\ V でも、 \fBsignal\fP() に対してこれらの挙動を規定している。
+こうした挙動はまずく、ハンドラーがハンドラー自身を再設定する機会が 来るより前に、同じシグナルがまた配送される可能性がある。
+さらに、同じシグナルが立て続けに配送されると、同じシグナルが ハンドラーを繰り返し起動されることになる。
-BSD improved on this situation, but unfortunately also changed the semantics
-of the existing \fBsignal\fP() interface while doing so. On BSD, when a
-signal handler is invoked, the signal disposition is not reset, and further
-instances of the signal are blocked from being delivered while the handler
-is executing. Furthermore, certain blocking system calls are automatically
-restarted if interrupted by a signal handler (see \fBsignal\fP(7)). The BSD
-semantics are equivalent to calling \fBsigaction\fP(2) with the following
-flags:
+BSD はこの状況が改善したが、残念なことに、その過程で既存の \fBsignal\fP() の挙動も変更された。 BSD
+では、シグナルハンドラーが起動された際、 シグナルの処理方法はリセットされず、 ハンドラーの実行中は、同じシグナルのさらなる生成は配送がブロックされる。
+また、 シグナルハンドラーが中断された場合、 停止中のシステムコールのいくつかは自動的に再スタートされる。 BSD の挙動は、 以下のフラグを指定した
+\fBsigaction\fP(2) の呼び出しと等価である。
sa.sa_flags = SA_RESTART;
Linux での状況は以下の通りである。
.IP * 2
-カーネルの \fBsignal\fP() システムコールは System V 方式を提供している。
+カーネルの \fBsignal\fP() システムコールは System\ V 方式を提供している。
.IP *
デフォルトでは、glibc 2 以降では、 \fBsignal\fP() ラッパー関数はカーネルのシステムコールを起動しない。 代わりに、ラッパー関数は
BSD 方式を示すフラグを使って \fBsigaction\fP(2) を呼び出す。 機能検査マクロ \fB_BSD_SOURCE\fP
を定義していれば、このデフォルトの動作となる。 デフォルトでは、 \fB_BSD_SOURCE\fP が定義される。 \fB_BSD_SOURCE\fP は
\fB_GNU_SOURCE\fP が定義された場合には暗黙のうちに定義され、 もちろん明示的に定義することもできる。
-.sp
+.IP *
.\"
.\" System V semantics are also provided if one uses the separate
.\" .BR sysv_signal (3)
.\" function.
-glibc 2 以降では、機能検査マクロ \fB_BSD_SOURCE\fP が定義されていなければ、 \fBsignal\fP() は System V
+.\" .IP *
+.\" The
+.\" .BR signal ()
+.\" function in Linux libc4 and libc5 provide System\ V semantics.
+.\" If one on a libc5 system includes
+.\" .I <bsd/signal.h>
+.\" instead of
+.\" .IR <signal.h> ,
+.\" then
+.\" .BR signal ()
+.\" provides BSD semantics.
+glibc 2 以降では、機能検査マクロ \fB_BSD_SOURCE\fP が定義されていなければ、 \fBsignal\fP() は System\ V
方式となる。 (\fBgcc\fP(1) が標準指定モード (\fI\-std=xxx\fP or \fI\-ansi\fP) で起動された場合、もしくは
\fB_POSIX_SOURCE\fP, \fB_XOPEN_SOURCE\fP, \fB_SVID_SOURCE\fP
といった他の様々な機能検査マクロが定義された場合、 デフォルトの \fB_BSD_SOURCE\fP の暗黙の定義は行われない。
\fBfeature_test_macros\fP(7) を参照のこと。)
-.IP *
-Linux の libc4 と libc5 の \fBsignal\fP() 関数は System V 方式である。 libc5 システムにおいて
-\fI<signal.h>\fP のかわりに \fI<bsd/signal.h>\fP をインクルードすると、
-\fBsignal\fP() は \fB__bsd_signal\fP() に再定義され、 \fBsignal\fP() は BSD 方式となる。
.SH 関連項目
\fBkill\fP(1), \fBalarm\fP(2), \fBkill\fP(2), \fBkillpg\fP(2), \fBpause\fP(2),
\fBsigaction\fP(2), \fBsignalfd\fP(2), \fBsigpending\fP(2), \fBsigprocmask\fP(2),
\fBsigqueue\fP(3), \fBsigsetops\fP(3), \fBsigvec\fP(3), \fBsysv_signal\fP(3),
\fBsignal\fP(7)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。
+プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。