最も暴力的な信号kill -9
(SIGKILL)を除いて、残りの3つの一般的な信号の違いはよくわかりません(ここ) -HUP
(1)、-INT
(2)及び-TERM
(15).
どのような状況では、1つは動作し、もう1つは動作しませんか?
一般的に-9
(-KILL
)はいつ失敗するのですか?
私にとって、彼らはプロセスを終了する必要があるようです。優雅に、保存しない。重大度を評価します-HUP < -TERM < -INT < -KILL
。
ベストアンサー1
SIGKILLは決して失敗しません実行中のプロセスを終了することが重要です。アプリケーションに反応する機会を提供するための他の信号があります。
SIGINT、SIGTERM、SIGQUIT、SIGHUP のデフォルト動作はプログラムを終了することです。ただし、アプリケーションはこれらの信号のハンドラをインストールできます。したがって、これらの信号を受信するときのアプリケーションの実際の動作は、システム設計ではなく慣習(各アプリケーションが従うことも従わないかもしれない)の問題です。
SIGINTはそれらの中で「最も弱い」ものです。伝統的な意味は、「今やっていることをやめ、追加のユーザー入力を待つ」です。Ctrl端末で+によって生成される信号です。C非対話型プログラムは通常、これをSIGTERMとして扱います。
SIGTERMは「通常の」終了信号です。アプリケーションが完全に終了するように指示します。アプリケーションは、リソース(残された一時ファイルなど)を取得するために状態を保存するのに少し時間がかかることがあります。重要なアプリケーション中に中断したくないアプリケーションは、一定期間SIGTERMを無視できます。
SIGHUPは、重大度の点でSIGTERMとほぼ同じですが、ユーザーが端末との接続を切断したときに端末で実行されているアプリケーションに自動的に送信されるという点で特定の役割を果たします。回線が切れました)。 SIGHUPは明示的に送信する必要があるSIGTERMとは異なり、通常は非自発的であるため、アプリケーションはその状態をSIGHUPに保存する必要があります。 SIGHUPはまた、ユーザーに直面しないアプリケーションに対して全く異なる一般的な意味を持ちます(悪魔)、つまり構成ファイルを再ロードすることです。
SIGQUITは無視できる最も深刻な信号です。アプリケーションが誤動作してすぐにシャットダウンする必要があるときに使用するように設計されており、基本的に伝統的にコアダンプファイル(ほとんどのユーザーがどのコアファイルが何であるかわからない最新のシステムはデフォルトでそのファイルを生成しない傾向があります)アプリケーションはハンドラを設定できますが、SIGQUITの目的は深刻なエラーが発生した場合に使用されるため、ほとんど実行されますしないでください(特に状態を保存しないでください)。