[linux]シグナルとkill

シグナルとは

シグナルとは、プロセスに対して通知するイベント。

シグナルを受け取ったプロセスは現在実行中の処理を中断し、シグナルに応じた処理を実行する。

具体的には、killやCtrl+hogeでシグナルを発生させることができる。

代表的なシグナル

シグナル killコマンド Ctrlコマンド 意味
SIGHUP kill -1 - ハングアップ(端末の切断などで発生)
SIGINT kill -2 Ctrl+C 割り込みの発生
SIGKILL kill -9 - プロセスの強制終了
SIGTERM kill -15 - プロセスの終了
SIGTSTP kill -TSTP Ctrl+Z プロセスの一時停止

シグナルを受け取ったプロセスは、シグナルごとに定義された処理が実行される。 ただし、SIGKILLはプロセスの外部からプロセスを終了させるのでプロセスで独自の処理を定義できない。

Ctrl+hogeの正体

Ctrl+hogeが入力されると、以下で定義されたシグナルが送信される。 シグナルの送信先は、フォアグラウンドで動いているプロセスグループに属するすべてのプロセス。

stty -a

ちなみに、Ctrl + DはEOFをプロセスに送っている。

kill

シグナルの送信先は、指定されたプロセスのみ(プロセスグループではない)。

このエントリーをはてなブックマークに追加
Takatomo Honda avatar
About Takatomo Honda
システム開発 / プロトタイプ開発 / 開発組織の構築 / アプリケーションの内製化 /等、お気軽にご相談ください。