.SH 説明
Linux は POSIX 信頼シグナル (reliable signal; 以後 "標準シグナル"と表記) と POSIX
リアルタイムシグナルの両方に対応している。
-.SS "Signal dispositions"
+.SS シグナル処理方法
シグナルはそれぞれ現在の「処理方法 (disposition)」を保持しており、 この処理方法によりシグナルが配送された際にプロセスが
どのような振舞いをするかが決まる。
\fBfork\fP(2) 経由で作成された子プロセスは、親プロセスのシグナルの処理方法の コピーを継承する。
\fBexecve\fP(2) の前後で、ハンドラが設定されているシグナルの処理方法はデフォルトにリセットされ、
無視が設定されているシグナルの処理方法は変更されずそのままとなる。
-.SS "Sending a signal"
+.SS シグナルの送信
以下のシステムコールとライブラリ関数を使って、 呼び出し者はシグナルを送信することができる。
.TP 16
\fBraise\fP(3)
.TP
\fBsigqueue\fP(3)
指定されたプロセスに付属データとともにリアルタイムシグナルを送る。
-.SS "Waiting for a signal to be caught"
+.SS シグナルが捕捉されるのを待つ
以下のシステムコールを使って、シグナルが捕捉されるまで 呼び出したプロセスやスレッドの実行を中断 (suspend) することができる
(ハンドラが設定されていないシグナルによりそのプロセスが終了した 場合にも実行の停止は終了する)。
.TP 16
.TP
\fBsigsuspend\fP(2)
一時的にシグナルマスク (下記参照) を変更し、 マスクされていないシグナルのいずれかが捕捉されるまで 実行を中断する。
-.SS "Synchronously accepting a signal"
+.SS シグナルの同期受信
シグナルハンドラ経由でシグナルを非同期 (asynchronously) で捕捉する以外にも、 シグナルを同期 (synchronously)
して受け付けることもできる。 同期して受け付けるとは、シグナルが配送されるまで実行を停止 (block)
するということである。シグナルを受け付けた際に、カーネルは そのシグナルに関する情報を呼び出し者に返す。 これを行う一般的な方法が二つある。
このファイルディスクリプタからの \fBread\fP(2) は、 \fBsignalfd\fP(2)
の呼び出し時に指定されたシグナル集合のシグナルの一つが呼び出し元に 配送されるまで停止 (block) する。 \fBread\fP(2)
が返すバッファにはシグナルに関する情報を格納した構造体が入っている。
-.SS "Signal mask and pending signals"
+.SS シグナルマスクと処理待ちシグナル
シグナルは \fIブロック (block)\fP されることがある。ブロックされると、そのシグナルは その後ブロックを解除されるまで配送されなくなる。
シグナルが生成されてから配送されるまでの間、そのシグナルは \fI処理待ち (pending)\fP であると呼ばれる。
\fBfork\fP(2) 経由で作成された子プロセスでは、処理待ちのシグナル集合は空の集合で初期化される。 \fBexecve\fP(2)
の前後で、処理待ちのシグナル集合は保持される。
-.SS "Standard signals"
-Linux supports the standard signals listed below. Several signal numbers
-are architecture\-dependent, as indicated in the "Value" column. (Where
-three values are given, the first one is usually valid for alpha and sparc,
-the middle one for x86, arm, and most other architectures, and the last one
-for mips. (Values for parisc are \fInot\fP shown; see the Linux kernel source
-for signal numbering on that architecture.) A \- denotes that a signal is
-absent on the corresponding architecture.)
+.SS 標準シグナル
+Linux は以下に示す標準シグナルに対応している。シグナル番号の一部はアー
+キテクチャ依存であり、"値" 欄に示す通りである。 (3つの値が書かれている
+ものは、 1つ目が alpha と sparc で通常有効な値、 真ん中が x86, arm や
+他のほとんどのアーキテクチャでの有効な値、最後が mips での値である。
+(parisc での値は記載されて\fIいない\fP。 parisc でのシグナル番号は
+Linux カーネルソースを参照してほしい)。 \- はそのアーキテ
+クチャにおいて対応するシグナルがないことを示す。)
最初に、POSIX.1\-1990 に定義されているシグナルを示す。
.TS
SIGCHLD 20,17,18 Ign 子プロセスの一時停止 (stop) または終了
SIGCONT 19,18,25 Cont 一時停止 (stop) からの再開
SIGSTOP 17,19,23 Stop プロセスの一時停止 (stop)
-SIGTSTP 18,20,24 Stop Stop typed at terminal
-SIGTTIN 21,21,26 Stop Terminal input for background process
-SIGTTOU 22,22,27 Stop Terminal output for background process
+SIGTSTP 18,20,24 Stop 端末より入力された一時停止 (stop)
+SIGTTIN 21,21,26 Stop バックグランドプロセスの端末入力
+SIGTTOU 22,22,27 Stop バックグランドプロセスの端末出力
.TE
シグナル \fBSIGKILL\fP と \fBSIGSTOP\fP はキャッチ、ブロック、無視できない。
.\" parisc is the only exception: SIGSYS is 12, SIGUNUSED is 31
\fBSIGUNUSED\fP が定義されている場合には、ほとんどのアーキテクチャで \fBSIGSYS\fP の同義語となっている。
-.SS "Real\-time signals"
+.SS リアルタイムシグナル
Linux はリアルタイムシグナルをサポートしている。 リアルタイムシグナルは元々 POSIX.1b のリアルタイム拡張で定義されて
いるものであり、現在では POSIX.1\-2001 に含まれている。 対応しているリアルタイムシグナルの範囲は、マクロ \fBSIGRTMIN\fP と
\fBSIGRTMAX\fP で定義される。 POSIX.1\-2001 では、少なくとも \fB_POSIX_RTSIG_MAX\fP (8)
utimes()
.fi
.in
-.SS "Interruption of system calls and library functions by signal handlers"
+.SS シグナルハンドラによるシステムコールやライブラリ関数への割り込み
システムコールやライブラリが停止 (block) している間にシグナルハンドラが 起動されると、以下のどちらかとなる。
.IP * 2
シグナルが返った後、呼び出しは自動的に再スタートされる。
.RE
.PP
\fBsleep\fP(3) 関数も、ハンドラにより割り込まれた場合、決して再スタートされることはない。 しかし、成功となり、残っている停止時間を返す。
-.SS "Interruption of system calls and library functions by stop signals"
+.SS 一時停止シグナルによるシステムコールやライブラリ関数への割り込み
Linux では、シグナルハンドラが設定されていない場合でも、 いくつかのブロッキング型のインターフェイスは、 プロセスが一時停止 (stop)
シグナルの一つにより停止され、 \fBSIGCONT\fP により再開された後に、エラー \fBEINTR\fP で失敗する可能性がある。 この挙動は
POSIX.1 で認められておらず、他のシステムでは起こらない。