OSDN Git Service

Release some pages for LDP v3.79
[linuxjm/LDP_man-pages.git] / release / man2 / signal.2
index 021969a..1e7d911 100644 (file)
 .\" 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 書式
@@ -52,7 +67,7 @@ signal \- ANSI C シグナル操作
 \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
@@ -64,12 +79,13 @@ signal \- ANSI C シグナル操作
 .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
@@ -86,14 +102,13 @@ POSIX では、 \fBkill\fP(2)  や \fBraise\fP(3)  で生成できないシグ
 .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
@@ -103,58 +118,58 @@ POSIX では、 \fBkill\fP(2)  や \fBraise\fP(3)  で生成できないシグ
 .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),
@@ -162,6 +177,5 @@ Linux の libc4 と libc5 の \fBsignal\fP()  関数は System V 方式である
 \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/ に書かれている。