シグナル (イベント) |
辞書:電算用語の基礎知識 計算機内部固件編 (TCAPI) |
読み:シグナル |
外語:signal |
品詞:名詞 |
UNIXやPOSIX準拠OS(Linux等)における、プロセスに対する割り込み機能のこと。
|
概要 |
UNIX及びUNIX風のOSでは古くからある機能で、他のプロセスに対して非同期に特定の処理を行なわせたいとき、そのプロセスに対してシグナルを送信する。
プロセスはシグナルを受け取ると、決められた処理を行なう。sigaction(2)やsignal(2)システムコールによって、その動作を変更することが出来る。この時の処理を、シグナルハンドラーという。
但しその実装方法はOSによって異なっており、また同じOSであってもバージョンによって異なることもある。
特徴 |
動作 |
シグナルには、それぞれ既定の動作方法が存在し、シグナルの処理方法を変更しない限りは、既定の処理が実行される。
プロセス |
シグナルの処理は、SIGKILL と SIGSTOP を除いて変更することができる。
但し、シグナルはプロセス単位の属性である。マルチスレッドで動作していても、プロセス単位でしか設定することができない。
番号 |
シグナルは、int値によるシグナル番号によって区別される。シグナル番号は環境依存であり、統一されていない。
Linuxの場合、x86版は独自の附番である。一方、alpha/sparc版はBSDに近く、mips版はSystem V(UnixWare等)に近い。
Cなどで処理を書く場合、signal.hをincludeすることでシンボル(識別子)を定義し、そのシンボルを用いる。このシンボルは、多くの環境で、おおむね一致している。
種類 |
以下、BSDはFreeBSD、Linuxのx86はix86/ia64/ppc/s390/arm/sh、αはalpha/sparc、miはmipsでの値を掲示してある。
POSIX.1-2001 |
シグナル名 | 番号 | 環境 | 動作 | 概要 | |||
---|---|---|---|---|---|---|---|
BSD | Linux | ||||||
x86 | α | mi | |||||
SIGHUP | 1 | ? | POSIX | 終了 | ハングアップ | ||
SIGINT | 2 | 2 | ANSI | 終了 | 割り込み(Ctrl+C) | ||
SIGQUIT | 3 | 3 | POSIX | コア | 中止 (ASCII FS) | ||
SIGILL | 4 | 4 | ANSI | コア | 不正命令(トラップされた場合、リセットされない) | ||
SIGTRAP | 5 | 5 | POSIX | コア | トレース/ブレークポイント (トラップされた場合、リセットされない) | ||
SIGIOT | 6 | 4.2BSD | コア | IOT命令 | |||
SIGABRT | 6 | ANSI | コア | abort()された (古いSIGIOTからの置き換え。番号は同じ) | |||
SIGFPE | 8 | 8 | ANSI | コア | 浮動小数点例外、0除算例外 | ||
SIGKILL | 9 | 9 | POSIX | 終了 | 強制終了 (キャッチや無視はできない) | ||
SIGBUS | 10 | ? | 4.2BSD | コア | バスエラー | ||
SIGSEGV | 11 | 11 | ANSI | コア | セグメンテーション侵害 | ||
SIGSYS | 12 | 31 | 12 | SVR4 | コア | 無効な引数でのシステムコール | |
SIGPIPE | 13 | 13 | POSIX | 終了 | パイプ破壊(読み手のないパイプへの書き出し) | ||
SIGALRM | 14 | 14 | POSIX | 終了 | アラームの時間切れ。alarm()、sleep()、usleep() | ||
SIGTERM | 15 | 15 | ANSI | 終了 | kill()からの終了要求シグナル | ||
SIGURG | 16 | 23 | 16 | 21 | 4.2BSD | 無視 | ソケットの緊急事態 |
SIGSTOP | 17 | 19 | 17 | 23 | POSIX | 停止 | プロセスの一旦停止 (キャッチや無視はできない) |
SIGTSTP | 18 | 20 | 18 | 24 | POSIX | 停止 | TTYからの一旦停止要求(Ctrl+Z) |
SIGCONT | 19 | 18 | 19 | 25 | POSIX | 再開 | 停止されたプロセスの再開 |
SIGCLD | ‐ | ‐ | ‐ | 18 | System V | 無視 | 子プロセスの一旦停止や終了 |
SIGCHLD | 20 | 17 | 20 | POSIX | |||
SIGTTIN | 21 | 21 | 26 | POSIX | 停止 | バックグラウンドプロセスのTTY入力 | |
SIGTTOU | 22 | 22 | 27 | POSIX | 停止 | バックグラウンドプロセスのTTY出力 | |
SIGXCPU | 24 | 24 | 30 | 4.2BSD | コア | CPUの制限時間超過 | |
SIGXFSZ | 25 | 25 | 31 | 4.2BSD | コア | 作成可能ファイルサイズ制限の超過 | |
SIGVTALRM | 26 | 26 | 28 | 4.2BSD | 終了 | 仮想アラームの時間切れ | |
SIGPROF | 27 | 27 | 29 | 4.2BSD | 終了 | プロファイリングタイマーの時間切れ | |
SIGUSR1 | 30 | 10 | 30 | 16 | POSIX | 終了 | ユーザー定義シグナル1 |
SIGUSR2 | 31 | 12 | 31 | 17 | POSIX | 終了 | ユーザー定義シグナル2 |
SIGPOLL | ‐ | ‐ | System V | 終了 | ポーリング可能イベントの発生 (SIGIOと同じ) |
SIGBUS/SIGXCPU/SIGXFSZは動作がコアダンプということになっているが、その状況から、失敗する可能性も高い。
その他 |
シグナル名 | 番号 | 環境 | 動作 | 概要 | |||
---|---|---|---|---|---|---|---|
BSD | Linux | ||||||
x86 | α | m | |||||
SIGEMT | 7 | ‐ | 7 | POSIX | 終了 | EMT命令、命令実行エミュレート | |
SIGIO | 23 | 29 | 23 | 22 | 4.2BSD | 終了 | ソケット入出力が可能になった |
SIGWINCH | 28 | 28 | 20 | 4.3BSD | 無視 | ウィンドウサイズが変化した | |
SIGINFO | 29 | ‐ | 29 | ‐ | BSD | 情報の要求(Ctrl+T) | |
SIGPWR | ‐ | 30 | 19 | System V | 終了 | 電源障害、再起動 | |
SIGLOST | ‐ | ‐ | ‐ | Linux | |||
SIGTHR | 32 | ‐ | BSD | スレッドの割り込み | |||
SIGLWP | ‐ | BSD | スレッドライブラリ実装用の予約 | ||||
SIGSTKFLT | ‐ | 16 | ‐ | ‐ | Linux | 数値演算プロセッサーのスタックフォールト (未使用) | |
SIGUNUSED | ‐ | 31 | ‐ | ‐ | Linux | コア | 未使用のシグナル (SIGSYSと同じ) |
SIGINFO/SIGPWR/SIGLOSTは、同じ番号に別名がある。FreeBSDはSIGINFOである。Linuxのalpha/sparc版は、alphaではSIGINFO/SIGPWR、sparc版はSIGLOST、という違いがある。
この他、例えばSolarisなどでは独自のシグナルが定義されている。
終了関係 |
プロセスの終了に関するシグナルには、次のようなものがある。OSによっては無いものもある。
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |