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

名称
書式
解説
戻り値
エラー
関連項目
歴史

jman



Time: 07:07:08 GMT, January 12, 2009