【シグナル】

シグナル とは?

最終更新:
💡 プロセスへの合図、終了要求も一時停止も伝える

Unix系OSなどで、プロセスやスレッドにイベントを知らせる仕組み。終了要求、一時停止、異常発生などの通知に使われる。受信時の動作はシグナルとプログラムの設定による。

📌 このページのポイント
シグナル:プロセスへの合図 端末・コマンド 例:kill -s TERM プロセス 受信して動作 通知 多くのシグナルで選べる動作 標準の動作 終了・停止など ハンドラ 用意した処理 無視 処理しない 例外:SIGKILL(終了)・SIGSTOP(停止) 捕捉・無視・ブロックはできない
Unix系OSの例。受信時の動作はシグナルとプログラムの設定によります。SIGTERMで保存や後片付けをするには、プログラム側の処理が必要です。
ひよこ ひよこ
シグナルってプロセスに何かを伝える仕組みなの?
ペンギン先生 ペンギン先生
そうだよ。ここではLinuxなどのUnix系OSを例にするね。「終了してね」「一時停止して」といった合図や、実行中の異常を知らせる仕組みなんだ。プロセスだけでなく特定のスレッドへ送る場合もあるよ。
ひよこ ひよこ
Ctrl+Cでプログラムが止まるのもシグナル?
ペンギン先生 ペンギン先生
端末の通常の設定では、Ctrl+Cが前面で実行中のプロセス群へSIGINTを送るんだ。標準の動作は終了だけど、プログラムが受信時の処理を変更している場合もあるよ。
ひよこ ひよこ
killコマンドは必ず終了させるの?
ペンギン先生 ペンギン先生
シグナルを送るコマンドだよ。例えばkill -s TERM PIDは終了要求のSIGTERMを送る。後片付けの処理をプログラムが用意していれば、それを行ってから終了できるけど、自動的に保存してくれるわけではないんだ。
ひよこ ひよこ
SIGKILLなら受信時に保存できる?
ペンギン先生 ペンギン先生
できないよ。SIGKILLは強制終了で、プログラムのハンドラによる後片付けを実行できないんだ。SIGSTOPも一時停止の合図で、どちらも捕捉・無視・ブロックができない例外だよ。
ひよこ ひよこ
シグナルには決まった番号があるの?
ペンギン先生 ペンギン先生
名前には番号が対応するけど、番号や種類はOSやCPUの構成によって違うよ。kill -lで利用環境の一覧を確認しよう。SIGHUPで設定を再読み込みする、といった使い方もプログラム側の取り決めなんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「シグナル」って出てきたら「プロセスやスレッドにイベントを知らせる合図」と思えればだいたいOK!
📖 おまけ:英語の意味
「signal」 = 信号・合図
💬 英語の「合図」という意味と結び付けると、プロセスへの通知をイメージしやすいね

参考資料

← 用語集にもどる