回答:
SIGKILLは実行中のプロセスの強制終了に失敗することはありません。それがポイントです。アプリケーションに反応する機会を与える他の信号が存在します。
SIGINT、SIGTERM、SIGQUIT、SIGHUPのデフォルトの動作は、プログラムを強制終了することです。ただし、アプリケーションはこれらの信号のハンドラーをインストールできます。したがって、アプリケーションがこれらの信号を受信したときのアプリケーションの実際の動作は、システム設計ではなく、慣習の問題です(各アプリケーションが従う場合も従わない場合もあります)。
SIGINTはロットの「最も弱い」ものです。その従来の意味は、「今あなたがしていることをやめて、さらなるユーザー入力を待つ」ことです。これは、ターミナルでCtrl+ によって生成された信号Cです。通常、非対話型プログラムはSIGTERMのように扱います。
SIGTERMは「通常の」キルシグナルです。きれいに終了するようにアプリケーションに指示します。アプリケーションは、状態を保存し、一時ファイルなどのリソースを解放するために時間がかかる場合があります。重要なアプリケーション中に中断したくないアプリケーションは、SIGTERMをしばらく無視します。
SIGHUPは過酷な点ではSIGTERMとほぼ同じですが、ユーザーがその端末から切断すると端末で実行されているアプリケーションに自動的に送信されるため、特定の役割を持っています(電話回線とモデムを介して接続しているため)ハングアップ)。明示的に送信する必要があるSIGTERMとは異なり、SIGHUPはしばしば非自発的であるため、アプリケーションは状態をSIGHUPに保存しようとする必要があります。SIGHUPには、非ユーザー向けアプリケーション(デーモン)に対して従来とはまったく異なる意味があります。これは、構成ファイルを再ロードすることです。
SIGQUITは無視できるシグナルの中で最も過酷です。これは、アプリケーションが正常に動作せず、今すぐ強制終了する必要がある場合に使用することを意図しており、デフォルトではコアダンプファイルを残します(ほとんどのユーザーはコアファイルが何であるかを知らないため、デフォルトではそれらを生成しない傾向があります) 。アプリケーションはハンドラーを設定できますが、何か重大な問題がある場合にSIGQUITの意図が使用されるため、ほとんど何も実行しません(特に状態を保存しません)。
HUP
プログラムが終了するとは限りません。一部のプログラムはSIGHUP
、構成ファイルの再読み込みに使用します。SIGKILL
プロセスが割り込み不可能なスリープ状態にある場合、失敗するか、むしろ延期されます。