私は睡眠がどんなSIGNALも処理できないことを読みました。したがって、SIGTERM
を送信すると、無視する必要があるように思われます。
sleep 10000 &
26322
kill -s SIGTERM 26322
[1]+ Exited sleep 1000
なぜ睡眠が殺されるのですか?結局のところ、シグナルハンドラーはインストールされません。
シグナルハンドラーをインストールしないプログラム、またはシグナルを明示的に無視するプログラムは、他に何も言及されていない場合、デフォルトのアクションを実行します。
TERM
信号を受信したときのデフォルトのアクションは、プロセスを終了することです。
特にsleep
ユーティリティの場合、POSIX仕様で明示的に言及されている唯一のシグナルはALRM
シグナルであり、これによりプロセスがゼロ終了ステータス(「成功」)で終了します。 )。 sleep
は、ALRM
を無視するか、デフォルトのアクションを実行するかを選択することもできます。他のすべてのシグナルについては、デフォルトのアクションが実行されます。
sleep
ユーティリティのPOSIXドキュメント を参照してください。