一部のLinuxプログラム(vlcなど)は、端末にctrl+を2回入力してc実行を終了することをお勧めします(プログラムが最初の実行後に停止しない場合)。
ctrl+入力がc2回動作しますが、最初は機能しないのはなぜですか?
答え1
その効果は完全にアプリケーションによって異なります。ctrl+を押すと、cターミナルエミュレータは次を送信します。知能を知らせる適切な「信号ハンドラ」をトリガする信号をフォアグラウンドアプリケーションに送信します。 SIGINTのデフォルト信号ハンドラはアプリケーションを終了します。ただし、すべてのプログラムはSIGINT用の独自のシグナルハンドラをインストールできます(実行をまったく停止しないシグナルハンドラを含む)。
確かに、仮想LC最初の呼び出しでクリーンアップ/通常のシャットダウンを実行し、2番目の呼び出しですぐに実行を終了するデフォルトの動作に戻すシグナルハンドラをインストールします。
答え2
知能を知らせるCtrl、+によって送信された信号は、通常、Cプログラムにメインコマンド処理ループから外れた場合や終了しない場合に完全に終了するように指示します。一部のプログラムは、SIGINTを受信するとクリーンアッププロセスを実行します。プログラムが複雑すぎてクリーンアッププロセスが失敗した場合、一部のプログラムでは2番目のCtrl+Cのためにプログラムがすぐに終了します。そうすることは、各プログラムの作成者によって異なります。
2番目のCtrl+がCプログラムを終了しない場合、Ctrl+を試みると\プログラムが送信されます。信号出口、より暴力的な信号(しかしまだ捕捉可能な信号)またはCtrl+Z停止するプログラムの後にkill
コマンドが続きます(例:kill %1
send信号用語、伝統的にタスク番号1の場合、SIGQUITよりも強くない信号です。他のすべての方法が失敗した場合は、を使用してプログラムkill -KILL
(とも呼ばれる)を終了し、kill -9
キャッチできない信号を送信します。信号を殺す。