巨大なファイルを読み始めてしばらくして終了したいのですが、押すのに時間がかかる
Ctrl+C プログラムが停止します。を押してラグを短くする可能性はありますか Ctrl+C キーを数回?それともキープレスを無駄にしていますか?
最初の後 Ctrl-C、プログラムは SIGINT
を受け取り、通常、クリーンアップを開始します(tmpファイルの削除、ソケットのクローズなど)。あなたがヒットした場合 Ctrl-C 繰り返しますが、クリーンアップルーチンを中断する可能性があります(つまり、追加のシグナルが発生する可能性があります) 取り残されずに行動する)、混乱を残します。通常、これは当てはまりませんが、より一般的には、追加の信号は実際に送信されます後プロセスが終了しました(相互作用の固有の遅延のため)システムのオペレーター)。つまり、シグナルは別のプロセス(しばしばシェルですが、常にではない)によって受信されます。その受信者がこの信号を適切に処理しない場合(Shellが通常行うように-Jenny Dの回答を参照)、そのようなアクションの結果に不愉快に驚くかもしれません。
あなたはそれらを無駄にしています。発生するのは、サーバーが画面出力を完了すると、サーバーは複数の Ctrl-C。最初のものはプロセスを強制終了するために使用され、次のものはシェルで終了します。シェルは次のようになります。
[user@server]$ ^C
[user@server]$ ^C
[user@server]$ ^C
[user@server]$ ^C
[user@server]$ ^C
[user@server]$
短い答え:プロセスがそれに反応した場合。
長い答え:ヒットしたとき ctrl+c カーネルはプロセスにシグナルを送信します。次のコマンドで判別できる信号はどれですか。
user@Host:~# stty -a | grep -i "\^C"
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
stty
のmanページをご覧ください:
intr CHAR
CHAR will send an interrupt signal
これはシグナルINT
であり、番号2としても知られています。プロセスにシグナルハンドラーがある場合、プロセスはこれに反応できます。ほとんどのプロセスは、いくつかのクリーンアップジョブを実行して正常に終了します。
あなたが正しい。キー操作が無駄になっています。押すと Crtl+C 検出された場合、クリアする必要のあるリソースがあるため、時間がかかります。私が知っている1つの可能なケースはどこを押すか Ctrl+C Yum更新プロセスをキャンセルしたい場合、Yumを押すと、 Ctrl+C 2回クリックして、本当にキャンセルしたいことを確認します。
1つだけ Ctrl-C 一般的なケースでは必要ですが、必要になる場合があります。たとえば、Python Ctrl-C 新しいスレッドが生成されているとき、したがって、多くのスレッドを起動している最中に何か問題が発生した場合、python
親プロセスに到達しないようにするには、そのスレッドを複数回再送信する必要があります。キャッチ。
私は常にを押す必要があります Ctrlc 複数回。私は最初のプレスでそれを反応させたことがなく、システムが実際に Ctrlc 送信されています。それは実際にそれらのほとんどを見逃すか失うかのようです。