OSDN Git Service

(split) LDP: Update release pages
[linuxjm/LDP_man-pages.git] / release / man2 / signal.2
index e024e64..1907174 100644 (file)
@@ -1,11 +1,11 @@
 .\" Copyright (c) 2000 Andries Brouwer <aeb@cwi.nl>
-.\" and Copyright (c) 2008, Linux Foundation, written by Michael Kerrisk
-.\"      <mtk.manpages@gmail.com>
+.\" and Copyright (c) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
 .\" and Copyright (c) 2008, Linux Foundation, written by Michael Kerrisk
 .\"      <mtk.manpages@gmail.com>
 .\" based on work by Rik Faith <faith@cs.unc.edu>
 .\" and Mike Battersby <mike@starbug.apana.org.au>.
 .\"
+.\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
 .\" preserved on all copies.
@@ -25,6 +25,7 @@
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
 .\"
 .\" Modified 2004-11-19, mtk:
 .\" added pointer to sigaction.2 for details of ignoring SIGCHLD
 .\"     various sections.
 .\" 2008-07-11, mtk: rewrote and expanded portability discussion.
 .\"
-.\" 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
+.\"*******************************************************************
 .\"
-.\"WORD:       signal                  シグナル
-.\"WORD:       signal handler          シグナル・ハンドラ
-.\"WORD:       library                 ライブラリ
-.\"WORD:       semantics               方式
-.\"WORD:       prototype               型宣言
-.\"WORD:       architecture            アーキテクチャー
-.\"WORD:       endless loop            無限ループ
-.\"WORD:       feature test macro      機能検査マクロ
-.\"WORD:       disposition             処理方法
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH SIGNAL 2 2008-07-11 "Linux" "Linux Programmer's Manual"
+.\"*******************************************************************
+.TH SIGNAL 2 2013\-04\-19 Linux "Linux Programmer's Manual"
 .SH 名前
 signal \- ANSI C シグナル操作
 .SH 書式
-.B #include <signal.h>
+\fB#include <signal.h>\fP
 .sp
-.B typedef void (*sighandler_t)(int);
+\fBtypedef void (*sighandler_t)(int);\fP
 .sp
-.BI "sighandler_t signal(int " signum ", sighandler_t " sighandler );
+\fBsighandler_t signal(int \fP\fIsignum\fP\fB, sighandler_t \fP\fIsighandler\fP\fB);\fP
 .SH 説明
-.BR signal ()
-の動作は UNIX のバージョンにより異なる。
-また、歴史的に見て Linux のバージョンによっても異なっている。
-\fBこのシステムコールの使用は避け、\fP
-代わりに
-.BR sigaction (2)
-を使用すること。
-下記の「移植性」を参照。
+\fBsignal\fP()  の動作は UNIX のバージョンにより異なる。 また、歴史的に見て Linux のバージョンによっても異なっている。
+\fBこのシステムコールの使用は避け、\fP 代わりに \fBsigaction\fP(2)  を使用すること。 下記の「移植性」を参照。
 
-.BR signal ()
-はシグナル
-.I signum
-の処理方法を
-.I handler
-に設定する。
-.I handler
-には、
-.BR SIG_IGN "、"
-.BR SIG_DFL "、"
-プログラマが定義した関数 (「シグナル・ハンドラ」) のアドレスの
-いずれかを指定する。
+\fBsignal\fP()  はシグナル \fIsignum\fP の処理方法を \fIhandler\fP に設定する。 \fIhandler\fP には、
+\fBSIG_IGN\fP、 \fBSIG_DFL\fP、 プログラマが定義した関数 (「シグナル・ハンドラ」) のアドレスの いずれかを指定する。
 
-シグナル
-.I signum
-がプロセスに配送されると、以下のいずれかが発生する。
-.TP 3
+シグナル \fIsignum\fP がプロセスに配送されると、以下のいずれかが発生する。
+.TP  3
 *
-処理方法が
-.B SIG_IGN
-に設定されている場合、そのシグナルは無視される。
-.TP
+処理方法が \fBSIG_IGN\fP に設定されている場合、そのシグナルは無視される。
+.TP 
 *
-処理方法が
-.B SIG_DFL
-に設定されている場合、シグナルに関連づけられた
-デフォルトの動作が行われる
-.RB ( signal (7)
-参照)。
-.TP
+処理方法が \fBSIG_DFL\fP に設定されている場合、シグナルに関連づけられた デフォルトの動作が行われる (\fBsignal\fP(7)  参照)。
+.TP 
 *
-処理方法として関数が設定されている場合、
-まず最初に処理方法が
-.B SIG_DFL
-にリセットされるかそのシグナルのブロックが実行された後、
-.I signum
-を引き数として
-.I handler
-が呼び出される。
-ハンドラが起動される際にシグナルがブロックされた場合、
+処理方法として関数が設定されている場合、 まず最初に処理方法が \fBSIG_DFL\fP にリセットされるかそのシグナルのブロックが実行された後、
+\fIsignum\fP を引き数として \fIhandler\fP が呼び出される。 ハンドラが起動される際にシグナルがブロックされた場合、
 ハンドラが返る際にそのシグナルのブロックが解除される。
 .PP
-シグナル
-.B SIGKILL
-と
-.B SIGSTOP
-は捕捉できず、無視することもできない。
+シグナル \fBSIGKILL\fP と \fBSIGSTOP\fP は捕捉できず、無視することもできない。
 .SH 返り値
-.BR signal ()
-は、今までのシグナル・ハンドラの値を返す。エラーの場合は
-.B SIG_ERR
-を返す。
+\fBsignal\fP()  は、今までのシグナル・ハンドラの値を返す。 エラーの場合は \fBSIG_ERR\fP を返し、 \fIerrno\fP
+にエラーの原因を示す値を設定する。
 .SH エラー
-.TP
-.B EINVAL
-.I signum
-が不正である。
+.TP 
+\fBEINVAL\fP
+\fIsignum\fP が不正である。
 .SH 準拠
-C89, C99, POSIX.1-2001.
+C89, C99, POSIX.1\-2001.
 .SH 注意
-マルチスレッドプロセスにおける
-.BR signal ()
-の結果は、指定されていない。
+マルチスレッドプロセスにおける \fBsignal\fP()  の結果は、指定されていない。
 .PP
-POSIX によると、
-.BR kill (2)
-や
-.BR raise (3)
-で生成できない
-.BR SIGFPE ,
-.BR SIGILL ,
-.B SIGSEGV
-シグナルを無視した後の動作は未定義である。
-0 による整数割り算の結果は未定義となる。
-ある種のアーキテクチャでは、これは
-.B SIGFPE
-シグナルを生成する。
-(同様に負の最大整数を \-1 で割ると
-.B SIGFPE
-が生成されるかもしれない。)
-このシグナルを無視すると無限ループに陥るかもしれない。
+POSIX では、 \fBkill\fP(2)  や \fBraise\fP(3)  で生成できないシグナル \fBSIGFPE\fP, \fBSIGILL\fP,
+\fBSIGSEGV\fP を無視 (ignore) した場合、その後の動作は未定義である。 ゼロによる整数割り算の結果は未定義となる。
+アーキテクチャーによっては、このとき \fBSIGFPE\fP シグナルが生成される。 (同様に負の最大整数を \-1 で割ると \fBSIGFPE\fP
+が生成されるかもしれない)  このシグナルを無視すると無限ループに陥るかもしれない。
 .PP
-.B SIGCHLD
-の動作として
-.B SIG_IGN
-を設定した場合の詳細な動作については、
-.BR sigaction (2)
-を参照すること。
+\fBSIGCHLD\fP の動作として \fBSIG_IGN\fP を設定した場合の詳細な動作については、 \fBsigaction\fP(2)  を参照すること。
 .PP
-シグナル・ハンドラ内から安全に呼び出すことができる、
-async-signal-safe functions (非同期シングルで安全な関数) の
-リストについては
-.BR signal (7)
-を参照。
+シグナル・ハンドラ内から安全に呼び出すことができる、 async\-signal\-safe functions (非同期シングルで安全な関数) の
+リストについては \fBsignal\fP(7)  を参照。
 .PP
-.I sighandler_t
-の使用は GNU 拡張である。
-各種バージョンの libc でこの型は定義済みである;
-libc4 と libc5 では
-.I SignalHandler
-を定義している。
-glibc では
-.I sig_t
-を定義しており、
-.B _GNU_SOURCE
-が定義されている場合には
-.I sighandler_t
-も定義されている。
-このような型を使用しないと、
-.BR signal ()
-の宣言は読みにくいものとなる。
+.\" libc4 and libc5 define
+.\" .IR SignalHandler ;
+\fIsighandler_t\fP の使用は GNU 拡張であり、 \fB_GNU_SOURCE\fP が定義された
+場合に公開される。glibc では \fB_BSD_SOURCE\fP が定義された場合には (BSD
+由来の) \fIsig_t\fP も定義される。このような型を使用しないと、
+\fBsignal\fP() の宣言は読みにくいものとなる。
 .in +4n
 .nf
 
-.BI "void ( *" signal "(int " signum ", void (*" handler ")(int)) ) (int);"
+\fBvoid ( *\fP\fIsignal\fP\fB(int \fP\fIsignum\fP\fB, void (*\fP\fIhandler\fP\fB)(int)) ) (int);\fP
 .fi
 .in
 .SS 移植性
-移植性のある
-.BR signal ()
-の使い方は、シグナルの処理方法を
-.BR SIG_DFL
-か
-.BR SIG_IGN
-に設定する方法だけである。
-シグナル・ハンドラを設定するのに
-.BR signal ()
-を使ったときの動作はシステムにより異なる
-(POSIX.1 は明示的にこの違いを認めている)。
-.B "移植性が必要なときはこのシステムコールを使用しないこと。"
+移植性のある \fBsignal\fP()  の使い方は、シグナルの処理方法を \fBSIG_DFL\fP か \fBSIG_IGN\fP に設定する方法だけである。
+シグナル・ハンドラを設定するのに \fBsignal\fP()  を使ったときの動作はシステムにより異なる (POSIX.1
+は明示的にこの違いを認めている)。 \fB移植性が必要なときはこのシステムコールを使用しないこと。\fP
+
+POSIX.1 は、 \fBsigaction\fP(2)  を規定することで移植性に関する混乱を解決した。 \fBsigaction\fP(2)
+はシグナル・ハンドラが起動される際の挙動を明示的に制御できる。 \fBsignal\fP()  の代わりにこのインターフェイスを使うこと。
 
-POSIX.1 は、
-.BR sigaction (2)
-を規定することで移植性に関する混乱を解決した。
-.BR sigaction (2)
-はシグナル・ハンドラが起動される際の挙動を明示的に制御できる。
-.BR signal ()
-の代わりにこのインターフェイスを使うこと。
+オリジナルの UNIX システムでは、 \fBsignal\fP()  を使って設定されたハンドラがシグナルの配送により起動されると、
+そのシグナルの処理方法は \fBSIG_DFL\fP にリセットされ、システムは同じシグナルがさらに生成されても
+シグナルの配送をブロックしなかった。これは、以下のフラグで \fBsigaction\fP(2) を呼び出すのと等価である。
 
-オリジナルの UNIX システムでは、
-.BR signal ()
-を使って設定されたハンドラがシグナルの配送により起動されると、
-そのシグナルの処理方法は
-.B SIG_DFL
-にリセットされ、システムは同じシグナルがさらに生成されても
-シグナルの配送をブロックしなかった。
-System V でも、
-.BR signal ()
-に対してこれらの挙動を規定している。
-こうした挙動はまずく、ハンドラがハンドラ自身を再設定する機会が
-来るより前に、同じシグナルがまた配送される可能性がある。
-さらに、同じシグナルが立て続けに配送されると、同じシグナルが
+    sa.sa_flags = SA_RESETHAND | SA_NODEFER;
+
+System V でも、 \fBsignal\fP()  に対してこれらの挙動を規定している。 こうした挙動はまずく、ハンドラがハンドラ自身を再設定する機会が
+来るより前に、同じシグナルがまた配送される可能性がある。 さらに、同じシグナルが立て続けに配送されると、同じシグナルが
 ハンドラを繰り返し起動されることになる。
 
-BSD では、シグナル処理の挙動を変更することで、この状況を改善した
-(しかし、残念なことに、
-.BR signal ()
-を使ってハンドラを設定する際に挙動が黙って変更される)。
-BSD では、シグナルハンドラが起動された際、
-シグナルの処理方法はリセットされず、
-ハンドラの実行中は、同じシグナルのさらなる生成は配送がブロックされる。
+BSD はこの状況が改善したが、残念なことに、その過程で既存の \fBsignal\fP() の挙動も変更された。 BSD
+では、シグナルハンドラが起動された際、 シグナルの処理方法はリセットされず、 ハンドラの実行中は、同じシグナルのさらなる生成は配送がブロックされる。
+また、 シグナルハンドラが中断された場合、 停止中のシステムコールのいくつかは自動的に再スタートされる。 BSD の挙動は、 以下のフラグを指定した
+\fBsigaction\fP(2) の呼び出しと等価である。
+
+    sa.sa_flags = SA_RESTART;
 
 Linux での状況は以下の通りである。
 .IP * 2
-カーネルの
-.BR signal ()
-システムコールは System V 方式を提供している。
+カーネルの \fBsignal\fP()  システムコールは System V 方式を提供している。
 .IP *
-デフォルトでは、glibc 2 以降では、
-.BR signal ()
-ラッパー関数はカーネルのシステムコールを起動しない。
-代わりに、ラッパー関数は BSD 方式を示すフラグを使って
-.BR sigaction (2)
-を呼び出す。
-機能検査マクロ
-.B _BSD_SOURCE
-を定義していれば、このデフォルトの動作となる。
-デフォルトでは、
-.B _BSD_SOURCE
-が定義される。
-.B _BSD_SOURCE
-は
-.B _GNU_SOURCE
-が定義された場合には暗黙のうちに定義され、
-もちろん明示的に定義することもできる。
+デフォルトでは、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
-glibc 2 以降では、機能検査マクロ
-.B _BSD_SOURCE
-が定義されていなければ、
-.BR signal ()
-は System V 方式となる。
-.RB ( gcc (1)
-が標準指定モード
-.RI ( -std=xxx " or " -ansi )
-で起動された場合、もしくは
-.BR _POSIX_SOURCE ,
-.BR _XOPEN_SOURCE ,
-.B _SVID_SOURCE
-といった他の様々な機能検査マクロが定義された場合、
-デフォルトの
-.B _BSD_SOURCE
-の暗黙の定義は行われない。
-.BR feature_test_macros (7)
-を参照のこと。)
 .\"
 .\" 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
+方式となる。 (\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 の
-.BR signal ()
-関数は System V 方式である。
-libc5 システムにおいて
-.I <signal.h>
-のかわりに
-.I <bsd/signal.h>
-をインクルードすると、
-.BR signal ()
-は
-.BR __bsd_signal ()
-に再定義され、
-.BR signal ()
-は BSD 方式となる。
+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 関連項目
-.BR kill (1),
-.BR alarm (2),
-.BR kill (2),
-.BR killpg (2),
-.BR pause (2),
-.BR sigaction (2),
-.BR signalfd (2),
-.BR sigpending (2),
-.BR sigprocmask (2),
-.BR sigsuspend (2),
-.BR bsd_signal (3),
-.BR raise (3),
-.BR siginterrupt (3),
-.BR sigqueue (3),
-.BR sigsetops (3),
-.BR sigvec (3),
-.BR sysv_signal (3),
-.BR signal (7)
+\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),
+\fBsigsuspend\fP(2), \fBbsd_signal\fP(3), \fBraise\fP(3), \fBsiginterrupt\fP(3),
+\fBsigqueue\fP(3), \fBsigsetops\fP(3), \fBsigvec\fP(3), \fBsysv_signal\fP(3),
+\fBsignal\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。