web-dev-qa-db-ja.com

Ctrl + Cはターミナルで実行中のプログラムを終了しません

わかりました、なぜかはわかりませんが、この質問が何度も聞かれるのを見てきましたが、役に立つ答えはありませんが、いくつかのコンピューターで検証したため、問題は明らかです。 Ctrl+Cは、ターミナル(Ubuntu v10)で実行中のプログラムを強制終了しません。誰もが実際に機能するソリューションを実際に指すことができるのだろうか。

これまでのところ、Ctrl+\Ctrl+SysRq+Kなどを試してみましたが、何も機能しません。

動作したのはCtrl+Zだけですが、実際にはプログラムを強制終了/終了するのではなく、単にバックグラウンドに置くだけで、実際にはkill %1を実行する必要がありますそれを殺します。

ありがとう!

6
techexpert

注:コメントの後に回答...

ほとんどの端末プログラムを殺すと確信しています。もちろん、新しいプロセスをフォークしたものを強制終了せず、すぐにプロンプ​​トを返します。

一部のプログラムでは、この割り込みをキャッチして、必要に応じて処理したり、無視したりする場合があります。プログラムが端末で実行されるように設計されているか、GUIから実行されるように設計されているかに大きく依存します。

10.04および11.10で試したプログラムのうち、終了するものは次のとおりです。

ping - which runs continuously by default, so this is the only way to stop it;
find - often takes a long time, so it's useful to be able to end it.
gedit
4
Marty Fried

実際、多くのプログラムはCtrl+Cで停止しません。これは、現在実行中のスレッドで例外を作成するだけだからです。マルチスレッドプログラムおよび「例外が発生した場合は、先に進む」プログラム。一連の指示が続行されます。アクションの適切なケースは、次のいずれかです。

  1. Ctrl + Breakキーコンボを使用します。
  2. Ctrl + Zを押します。これはプログラムを停止しませんが、コマンドプロンプトを返します。次に、ps -ax | grep *%program_name%*を実行します。停止したいヨープに対応する行を見つけます。行の最初の整数はプログラムIDです。 kill -9 %id%を実行して、最終的に停止します。
  3. プログラムも多くのリソースを消費する場合は、別のターミナルでtopコマンドを使用して、IDをより速く表示できます。
4
Barafu Albino

10.04を使用しているユーザーの1人でこの問題に直面しました。同じ問題がここで説明されています CTRL + Cは端末で動作しなくなりました

ただし、CTRL + SHIFT + Cを使用してコマンドを終了できます

Copy-to-clipboardおよびterminateコマンドは、キーボードショートカットを切り替えたようです。

2
Umair A. Shahid

プログラムの名前がわかっている場合は、別の端末でpkillを使用できます。たとえば、プログラムの名前がmuttの場合:

pkill mutt

CTRL + Cに応答しないmuttプログラムを終了します

0
Leone