シグナル (イベント)

読み:シグナル
外語:signal
品詞:名詞

UNIXPOSIX準拠OS(Linux等)における、プロセスに対する割り込み機能のこと。

UNIX及びUNIX風のOSでは古くからある機能で、他のプロセスに対して非同期に特定の処理を行なわせたいとき、そのプロセスに対してシグナルを送信する。

プロセスはシグナルを受け取ると、決められた処理を行なう。sigaction(2)やsignal(2)システムコールによって、その動作を変更することが出来る。この時の処理を、シグナルハンドラという。

但しその実装方法はOSによって異なっており、また同じOSであってもバージョンによって異なることもある。

シグナルは、int値によるシグナル番号によって区別される。この値もまたアーキテクチャ依存である。

Cなどで処理を書く場合、signal.hをincludeすることでシンボル(識別子)を定義し、そのシンボルを用いる。このシンボルは、多くの環境で、おおむね一致している。

一覧

UnixWare、FreeBSDSolarisLinuxのシグナルを一覧化した。

配列順序は、UNIX System V系のUnixWareでのシグナル番号順。UnixWareにない各OS独自のものは、最後に順不同。

シグナル名環境動作概要
SIGHUPPOSIXハングアップ
SIGINTANSI割り込み(Ctrl+C)
SIGQUITPOSIX中止 (ASCII FS)
SIGILLANSI不正命令(トラップされた場合、リセットされない)
SIGTRAPPOSIXトレース/ブレークポイント (トラップされた場合、リセットされない)
SIGIOT4.2BSDIOT命令
SIGABRTANSIabort()された (古いSIGIOTからの置き換え。番号は同じ)
SIGEMT EMT命令、命令実行エミュレート
SIGFPEANSI浮動小数点例外
SIGKILLPOSIX強制終了 (キャッチや無視はできない)
SIGBUS4.2BSDバスエラー
SIGSEGVANSIセグメンテーション侵害
SIGSYSSVR4無効な引数でのシステムコール
SIGPIPEPOSIXパイプ破壊(読み手のないパイプへの書き出し)
SIGALRMPOSIXアラームの時間切れ。alarm()、sleep()、usleep()
SIGTERMANSIkill()からの終了要求シグナル
SIGUSR1POSIXユーザ定義シグナル1
SIGUSR2POSIXユーザ定義シグナル2
SIGCLDSystem V子プロセスの一旦停止や終了 (SIGCHLDと同じ)
SIGCHLDPOSIX子プロセスの一旦停止や終了
SIGPWRSystem V電源障礙、再起動
SIGWINCH4.3BSDウィンドウサイズが変化した
SIGURG4.2BSDソケットの緊急事態
SIGPOLLSystem Vポーリング可能イベントの発生 (SIGIOと同じ)
SIGIO4.2BSDソケット入出力が可能になった
SIGSTOPPOSIXプロセスの一旦停止 (キャッチや無視はできない)
SIGTSTPPOSIXTTYからの一旦停止要求(Ctrl+Z)
SIGCONTPOSIX停止されたプロセスの再開
SIGTTINPOSIXバックグラウンドプロセスのTTY入力
SIGTTOUPOSIXバックグラウンドプロセスのTTY出力
SIGVTALRM4.2BSD仮想アラームの時間切れ
SIGPROF4.2BSDプロファイリングタイマの時間切れ
SIGXCPU4.2BSDCPUの制限時間超過
SIGXFSZ4.2BSD作成可能ファイルサイズ制限の超過
SIGWAITING 全LWPが割り込み通知を妨害
SIGLWP スレッドライブラリ実装用の予約
SIGAIO 非同期入出力シグナル
SIGINFOBSD情報の要求(Ctrl+T)
SIGTHRBSDスレッドの割り込み
SIGSTKFLTLinux数値演算プロセッサのスタックフォールト (未使用)
SIGUNUSEDLinux未使用のシグナル
SIGFREEZESolarisCPRで使われる特殊なシグナル
SIGTHAWSolarisCPRで使われる特殊なシグナル
SIGCANCELSolarisスレッドライブラリが使うスレッドキャンセルシグナル
SIGLOSTSolarisリソースの喪失
SIGRTMINSolaris優先度の高いリアルタイムシグナル
SIGRTMAXSolaris優先度の低いリアルタイムシグナル
SIGNULL pidへのアクセスのチェック

終了関係

プロセスの終了に関するシグナルには、次のようなものがある。OSによっては無いものもある。

  • SIGNULL ヌル ‐ pidへのアクセスのチェック
  • SIGHUP ハングアップ ‐ 終了、トラップ可能
  • SIGINT 割り込み ‐ 終了、トラップ可能
  • SIGQUIT 停止 ‐ コアダンプを出力して終了、トラップ可能
  • SIGKILL 強制終了 ‐ 強制終了、トラップ不可能
  • SIGTERM 終了 ‐ 終了、トラップ可能
  • SIGSTOP ストップ ‐ プロセスの休止、トラップ不可能
  • SIGTSTP ターミナルストップ ‐ プロセスの休止、トラップ可能
  • SIGCONT 継続 ‐ ストップしたプロセスの再開