読むザイルズの答え、
SIGHUPは、重大度の点でSIGTERMとほぼ同じですが、ユーザーが端末との接続を切断したときに端末で実行されているアプリケーションに自動的に送信されるという点で特定の役割を果たします。回線が切れました)。 SIGHUPは一般的に非自発的であり、以下に関連しています。SIGTERMは明示的に送信する必要があります。したがって、アプリケーションはSIGHUPに状態を保存しようとする必要があります。
「SIGTERMは明示的に送信する必要があります」の「明示的」とは、SIGTERMが最初にプロセス(カーネルではなく)によるプロセス呼び出しを介して送信される必要があることを意味しますかkill()
?
SIGKILLを指定されたプロセスに明示的に送信する必要があるかどうか疑問に思います。カーネルは暗黙的にプロセスにSIGKILLまたはSIGTERMを送信できますか?
オペレーティングシステムがシャットダウンすると、カーネルが実行中のプロセスにシグナルを送信してシャットダウンしますか?何の信号ですか?カーネルは暗黙的にそれを送信しますか?
ありがとうございます。
ベストアンサー1
私が知る限り、LinuxカーネルはSIGTERM
自分自身をユーザープロセスに送りません。 (SIGTERM
カーネルスレッド内で使用:カーネルがカーネルスレッドに停止を要求する方法です。)
多くの場合、カーネルはSIGKILL
独自にユーザープロセスにメッセージを送信します。例えば、OOMキラーSIGKILL
いくつかのターゲットを殺すために。カーネルエラーその結果、SIGKILL
さまざまなメモリエラーが発生する可能性がありますSIGKILL
。
いつ。 。 。いつオペレーティングシステムSIGTERM
プロセスを閉じて使用して終了しますSIGKILL
が、これらのシグナルはカーネルからは出ません(または呼び出しから直接は出ません)。kill()
pidが0または負のpidの場合、カーネルは複数のプロセスにシグナルを送信します。これは、サービスを終了するサービス管理者と、システム管理メカニズムの一部であるさまざまな最後の方法ですべてを終了するアプリケーションモードプログラムで発生します。killprocs
Van Smulenbergのrc
脚本、これkillprocs
OpenRCスクリプト、しかもsystemd-shutdown
プログラム。
いつ。 。 。いつコア終了または再起動してもプロセスに気を付けずに終了しません(参照reboot()
詳しくはこちらをご覧ください。LINUX_REBOOT_CMD_RESTART2
システムコールバリアントを無視すると、コマンド引数を使用して処理できません。