コース目次 / 第3章
シグナル — プロセスへの割り込み
kill -STOP/-CONTでプロセスを一時停止・再開させ、psのSTAT列がS→T→Sと変化することを確認します。シグナルがプロセスへの外部からの割り込みだと理解します。
killという名前ですが、プロセスを終了させるだけの道具ではありません。シグナルという、プロセスへの割り込み信号を送る道具です。
一時停止させる
./sleepy &
PID: 15072
ps -p 15072 -o pid,stat,cmd
PID STAT CMD
15072 S ./sleepy
kill -STOP 15072
ps -p 15072 -o pid,stat,cmd
PID STAT CMD
15072 T ./sleepy
STATがS(スリープ中)からT(停止中、Traced or stopped)に変わりました。SIGSTOPは、プロセスに気づかれず(コード側で捕まえたり無視したりできず)、強制的に一時停止させるシグナルです。
再開させる
kill -CONT 15072
ps -p 15072 -o pid,stat,cmd
PID STAT CMD
15072 S ./sleepy
SIGCONTで、またS(スリープ中、実質的には実行可能)に戻りました。プロセスは、一時停止していた場所から、何事もなかったかのように再開します。
kill 15072
プレーンなkill(引数無し)は、デフォルトでSIGTERM——「終了してください」というお願いのシグナルです。プロセス側がこれを無視するコードを書いていれば、終了しないこともあります(kill -KILLすなわちSIGKILLだけは、OSレベルで強制終了させる、無視できないシグナルです)。
持ち帰る一言
シグナルは、プロセスへの外部からの割り込み。 SIGSTOP/SIGCONTで一時停止・再開、SIGTERMでお願いベースの終了要求、SIGKILLで強制終了——同じ「プロセスを止める」でも、意味も強さも違います。次でこのコースをまとめます。
こうなっていればOK
卒業まであと1章です。
この章はまだ完了していません。
保存できませんでした(プライベートブラウズ中かもしれません)。この端末に進捗は残りませんが、先へは進めます。