doc/ja_JP.eucJP/man/man3/signal.3
Jun Kuriyama fc733ebccd Japanese version of section 3 manual pages based on 3.1-RELEASE.
This section is based on catpages contributed by Mainichi
Communications, Inc.

Translated by:	MYCOM team
Converted by:	Japanese Online Manual Project <man-jp@jp.FreeBSD.ORG>
Submitted by:	Kazuo Horikawa <k-horik@yk.rim.or.jp>
1999-12-09 16:26:08 +00:00

233 lines
7.9 KiB
Groff

.\" Copyright (c) 1980, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" @(#)signal.3 8.3 (Berkeley) 4/19/94
.\"
.Dd April 19, 1994
.Dt SIGNAL 3
.Os BSD 4
.Sh 名称
.Nm signal
.Nd 単純化されたソフトウェア信号機能
.Sh 書式
.Fd #include <signal.h>
.\" The following is Quite Ugly, but syntactically correct. Don't try to
.\" fix it.
.Ft void \*(lp*
.Fn signal "int sig" "void \*(lp*func\*(rp\*(lpint\*(rp\*(rp\*(rp\*(lpint"
or in FreeBSD's equivalent but easier to read typedef'd version:
.Ft typedef "void \*(lp*sig_t\*(rp \*(lpint\*(rp"
.Ft sig_t
.Fn signal "int sig" "sig_t func"
.Sh 解説
この
.Fn signal
機能は、もっと一般的な
.Xr sigaction 2
機能への単純化された
インタフェースです。
.Pp
信号によって、そのドメイン外のプロセスの操作が可能になり、プロセスが
自身または自身のコピー(子プロセス)を操作できます。信号には次の2 つの
一般的なタイプがあります。プロセスを終了させるもの、
およびそうではないものです。プログラムの終了を発生させる信号は、
回復不可能なエラーの結果であることもありますし、「割り込み」キャラクタを
入力する端末のユーザの結果であることもあります。信号が使用されるのは、
プロセスが停止されたときです。バックグラウンドにありながら制御端末に
アクセスする必要があるからです
(
.Xr tty 4
を参照
)
。信号がオプションで生成されるのは、
プロセスが停止された後、再開されるとき、子プロセスのステータスが
変化したとき、または入力が制御端末で準備ができているときです。処置が
行われない場合、ほとんどの信号は信号を受け取るプロセスの終了という
結果になります。信号によっては、代わりにプロセスが
信号を受け取ってから停止させるものもありますし、プロセスが別の
要求をされていない場合は単に廃棄されるものもあります。
.Dv SIGKILL
信号と
.Dv SIGSTOP
信号を除いて、
.Fn signal
関数は、信号を捕捉、無視、または割り込み生成できるようにします。
これらの信号はファイル
.Aq Pa signal.h
定義されています。
.Bl -column SIGVTALARMXX "create core imagexxx"
.It Sy " 名前 " " デフォルト処置 " " 説明"
.It Dv SIGHUP No " プロセスの終了" " 端末ラインのハングアップ"
.It Dv SIGINT No " プロセスの終了" " プログラムに割り込む"
.It Dv SIGQUIT No " コアイメージ作成" " プログラムを終了する"
.It Dv SIGILL No " コアイメージ作成" " 不正命令"
.It Dv SIGTRAP No " コアイメージ作成" " トラップを追跡する"
.It Dv SIGABRT No " コアイメージ作成" Xr abort 2
呼び出し ( 以前は
.Dv SIGIOT )
.It Dv SIGEMT No " コアイメージ作成" " エミュレート命令が実行される"
.It Dv SIGFPE No " コアイメージ作成" " 浮動小数点例外"
.It Dv SIGKILL No " プロセスの終了" " プログラムを抹消する"
.It Dv SIGBUS No " コアイメージ作成" " バスエラー"
.It Dv SIGSEGV No " コアイメージ作成" " セグメント化侵犯"
.It Dv SIGSYS No " コアイメージ作成" " 不存在のシステムコールを呼び出す"
.It Dv SIGPIPE No " プロセスの終了" " リーダー(reader)のないパイプに書き込む"
.It Dv SIGALRM No " プロセスの終了" " リアルタイマが時間切れ"
.It Dv SIGTERM No " プロセスの終了" " ソフトウェア終了信号"
.It Dv SIGURG No " 信号の廃棄" " ソケット上に存在する緊急状況"
.It Dv SIGSTOP No " プロセスの停止" " 停止する(捕捉または無視できない)"
.It Dv SIGTSTP No " プロセスの停止" " キーボードから生成された信号を停止する"
.It Dv SIGCONT No " 信号を廃棄" " 停止の後も継続する"
.It Dv SIGCHLD No " 信号を廃棄" " 子ステータスが変化した"
.It Dv SIGTTIN No " プロセス停止" " 制御端末から試みられたバックグラウンド読み取り"
.It Dv SIGTTOU No " プロセス停止" " 制御端末について試みられたバックグラウンド書き込み"
.It Dv SIGIO No " 信号廃棄" Tn " "
記述子上で入出力が可能
(
.Xr fcntl 2
を参照)
.It Dv SIGXCPU No " プロセスの終了" " プロセス cpu 時間制限を超過 (
.Xr setrlimit 2
を参照)
.It Dv SIGXFSZ No " プロセスの終了" " ファイルサイズ制限を超過 (
.Xr setrlimit 2
を参照)
.It Dv SIGVTALRM No " プロセスの終了" " 仮想時間アラーム (
.Xr setitimer 2
を参照)
.It Dv SIGPROF No " プロセスの終了" " プロファイル化タイマアラーム (
.Xr setitimer 2
を参照)
.It Dv SIGWINCH No " 信号を廃棄" " ウィンドウサイズの変化"
.It Dv SIGINFO No " 信号を廃棄" " キーボードからのステータス要求"
.It Dv SIGUSR1 No " プロセスの終了" " ユーザ定義信号 1"
.It Dv SIGUSR2 No " プロセスの終了" " ユーザ定義信号 2"
.El
.Pp
.Fa sig
パラメータはどの信号が受信されたかを指定します。
.Fa func
プロシージャは、
ユーザが信号受信時に処置を選択できるようにします。上記にリストしたように
発生するよう信号のデフォルト処置を設定するには、
.Fa func
.Dv SIG_DFL
である
必要があります。
.Dv SIG_DFL
は、デフォルトの処置をリセットします。信号を
無視するためには、
.Fa func
.Dv SIG_IGN
にする必要があります。これによって、
後続の信号のインスタンスが無視され、中断中のインスタンスが廃棄されます。
.Dv SIG_IGN
が使用されない場合は、それ以上に発生した信号は自動的にブロック
され、
.Fa func
が呼び出されます。
.Pp
取り扱われる信号は、関数が戻るときにはブロックされず、信号が発生したときに
プロセスは中断したところから継続します。
.Bf -symbolic
以前の信号機能と違って、ハンドラ func() は信号が配信された後も
インストールされたままになります。
.Ef
.Pp
システムコールによっては、呼び出しが実行中に信号が捕捉され、呼び出しが
完了前に終了された場合、呼び出しが自動的に再開されます
(ハンドラは
.Xr sigaction 2
.Dv SA_RESTART
フラグを使用してインストールされます)。
影響を
受けるシステムコールには、通信チャネル上または低速デバイス上および
.Xr ioctl 2
または
.Xr wait 2
の間の、
.Xr read 2 ,
.Xr write 2 ,
.Xr sendto 2 ,
.Xr recvfrom 2 ,
.Xr sendmsg 2 ,
および
.Xr recvmsg 2
が含まれます。
しかし、既にコミット済みの呼び出しは再開始されず、
代わりに部分的な処理成功が返されます ( たとえば、短い読み取りカウント )。
.Pp
信号ハンドラをインストールしたプロセスがフォークすると、子プロセスは信号を
継承します。
捕捉されたすべての信号が、
.Xr execve 2
関数の呼び出しによって、デフォルトの処置にリセットされます。無視された信号は
無視されたままになります。
.Sh 戻り値
呼び出しが成功すると、直前の処置が返されます。
そうでない場合、SIG_ERR が返され、グローバル変数
.Va errno
が設定されてエラーを示します。
.Sh エラー
.Fn signal
は次のうちの
1 つが発生すると処理失敗し、処置は取られません。
.Bl -tag -width [EINVAL]
.It Bq Er EINVAL
.Em Sig
は有効な信号番号ではありません。
.It Bq Er EINVAL
.Dv SIGKILL
または
.Dv SIGSTOP
についてのハンドラを無視または指定しようとする試みが行われます。
.Sh 関連項目
.Xr kill 1 ,
.Xr kill 2 ,
.Xr ptrace 2 ,
.Xr sigaction 2 ,
.Xr sigaltstack 2 ,
.Xr sigprocmask 2 ,
.Xr sigsuspend 2 ,
.Xr fpsetmask 3 ,
.Xr setjmp 3 ,
.Xr tty 4
.Sh 歴史
この
.Nm signal
機能は
.Bx 4.0
で現れました。