SIGNAL
Section: C Library Functions (3)
索引
jman
BSD mandoc
BSD 4
索引
名称
signal
- 単純化されたソフトウェアシグナル機能
索引
書式
Fd #include <signal.h>
Ft void *
Fn signal int sig void *funcintint
or in FreeBSD's equivalent but easier to read typedef'd version:
Ft typedef void *sig_t int
Ft sig_t
Fn signal int sig sig_t func
索引
解説
この
Fn signal
機能は、もっと一般的な
sigaction(2)
機能への単純化された
インタフェースです。
シグナルによって、そのドメイン外のプロセスの操作が可能になり、プロセスが
自身または自身のコピー(子プロセス)を操作できます。シグナルには次の2 つの
一般的なタイプがあります。プロセスを終了させるもの、
およびそうではないものです。プログラムの終了を発生させるシグナルは、
回復不可能なエラーの結果であることもありますし、「割り込み」キャラクタを
入力する端末のユーザの結果であることもあります。シグナルが使用されるのは、
プロセスが停止されたときです。バックグラウンドにありながら制御端末に
アクセスする必要があるからです
(
tty(4)
を参照
)
。シグナルがオプションで生成されるのは、
プロセスが停止された後、再開されるとき、子プロセスのステータスが
変化したとき、または入力が制御端末で準備ができているときです。処置が
行われない場合、ほとんどのシグナルはシグナルを受け取るプロセスの終了という
結果になります。シグナルによっては、代わりにプロセスが
シグナルを受け取ってから停止させるものもありますし、プロセスが別の
要求をされていない場合は単に廃棄されるものもあります。
SIGKILL
シグナルと
SIGSTOP
シグナルを除いて、
Fn signal
関数は、シグナルを捕捉、無視、または割り込み生成できるようにします。
これらのシグナルはファイル
Aq Pa signal.h
に
定義されています。
- 名前 デフォルト処置 説明
-
- SIGHUP プロセスの終了 端末ラインのハングアップ
-
- SIGINT プロセスの終了 プログラムに割り込む
-
- SIGQUIT コアイメージ作成 プログラムを終了する
-
- SIGILL コアイメージ作成 不正命令
-
- SIGTRAP コアイメージ作成 トラップを追跡する
-
- SIGABRT コアイメージ作成 abort(2)
-
呼び出し ( 以前は
SIGIOT
- SIGEMT コアイメージ作成 エミュレート命令が実行される
-
- SIGFPE コアイメージ作成 浮動小数点例外
-
- SIGKILL プロセスの終了 プログラムを抹消する
-
- SIGBUS コアイメージ作成 バスエラー
-
- SIGSEGV コアイメージ作成 セグメント化侵犯
-
- SIGSYS コアイメージ作成 不存在のシステムコールを呼び出す
-
- SIGPIPE プロセスの終了 リーダ(reader)のないパイプに書き込む
-
- SIGALRM プロセスの終了 リアルタイマが時間切れ
-
- SIGTERM プロセスの終了 ソフトウェア終了シグナル
-
- SIGURG シグナルを廃棄 ソケット上に存在する緊急状況
-
- SIGSTOP プロセスの停止 停止する(捕捉または無視できない)
-
- SIGTSTP プロセスの停止 キーボードから生成されたシグナルを停止する
-
- SIGCONT シグナルを廃棄 停止の後も継続する
-
- SIGCHLD シグナルを廃棄 子ステータスが変化した
-
- SIGTTIN プロセス停止 制御端末から試みられたバックグラウンド読み取り
-
- SIGTTOU プロセス停止 制御端末について試みられたバックグラウンド書き込み
-
- SIGIO シグナルを廃棄
-
記述子上で入出力が可能
(
fcntl(2)
を参照)
- SIGXCPU プロセスの終了 プロセス cpu 時間制限を超過
-
setrlimit(2)
を参照)
- SIGXFSZ プロセスの終了 ファイルサイズ制限を超過
-
setrlimit(2)
を参照)
- SIGVTALRM プロセスの終了 仮想時間アラーム
-
setitimer(2)
を参照)
- SIGPROF プロセスの終了 プロファイル化タイマアラーム
-
setitimer(2)
を参照)
- SIGWINCH シグナルを廃棄 ウィンドウサイズの変化
-
- SIGINFO シグナルを廃棄 キーボードからのステータス要求
-
- SIGUSR1 プロセスの終了 ユーザ定義シグナル 1
-
- SIGUSR2 プロセスの終了 ユーザ定義シグナル 2
-
Fa sig
パラメータはどのシグナルが受信されたかを指定します。
Fa func
プロシージャは、
ユーザがシグナル受信時に処置を選択できるようにします。上記にリストしたように
発生するようシグナルのデフォルト処置を設定するには、
Fa func
は
SIG_DFL
である
必要があります。
SIG_DFL
は、デフォルトの処置をリセットします。シグナルを
無視するためには、
Fa func
は
SIG_IGN
にする必要があります。これによって、
後続のシグナルのインスタンスが無視され、中断中のインスタンスが廃棄されます。
SIG_IGN
が使用されない場合は、それ以上に発生したシグナルは自動的にブロック
され、
Fa func
が呼び出されます。
取り扱われるシグナルは、関数が戻るときにはブロックされず、シグナルが発生したときに
プロセスは中断したところから継続します。
Bf -symbolic
以前のシグナル機能と違って、ハンドラ func() はシグナルが配信された後も
インストールされたままになります。
Ef
システムコールによっては、呼び出しが実行中にシグナルが捕捉され、呼び出しが
完了前に終了された場合、呼び出しが自動的に再開されます
(ハンドラは
sigaction(2)
で
SA_RESTART
フラグを使用してインストールされます)。
影響を
受けるシステムコールには、通信チャネル上または低速デバイス上および
ioctl(2)
または
wait(2)
の間の、
read(2),
write(2),
sendto(2),
recvfrom(2),
sendmsg(2),
および
recvmsg(2)
が含まれます。
しかし、既にコミット済みの呼び出しは再開始されず、
代わりに部分的な処理成功が返されます ( たとえば、短い読み取りカウント )。
シグナルハンドラをインストールしたプロセスがフォークすると、子プロセスはシグナルを
継承します。
捕捉されたすべてのシグナルが、
execve(2)
関数の呼び出しによって、デフォルトの処置にリセットされます。無視されたシグナルは
無視されたままになります。
索引
戻り値
呼び出しが成功すると、直前の処置が返されます。
そうでない場合、SIG_ERR が返され、グローバル変数
errno
が設定されてエラーを示します。
索引
エラー
Fn signal
は次のうちの
1 つが発生すると処理失敗し、処置は取られません。
- Bq Er EINVAL
-
Sig
は有効なシグナル番号ではありません。
- Bq Er EINVAL
-
SIGKILL
または
SIGSTOP
についてのハンドラを無視または指定しようとする試みが行われます。
索引
関連項目
kill(1),
kill(2),
ptrace(2),
sigaction(2),
sigaltstack(2),
sigprocmask(2),
sigsuspend(2),
fpsetmask(3),
setjmp(3),
tty(4)
索引
歴史
この
signal
機能は
BSD 4.0
で現れました。
索引
Index
- 名称
-
- 書式
-
- 解説
-
- 戻り値
-
- エラー
-
- 関連項目
-
- 歴史
-
Time: 07:07:08 GMT, January 12, 2009