jpman project specific RCS keyword (jpman %Id) is obsolete, after manual entries are stored in freefall CVS repository. This old Id is useless and more worse it confuses users and bug reporters. So, this old Id is removed. Submitted by:jpman project <man-jp@jp.FreeBSD.org>
234 lines
8.1 KiB
Groff
234 lines
8.1 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
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.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
|
|
で現れました。
|