Ctrl + C не завершает работающую программу в терминале

Хорошо, я не знаю почему, но я видел, что этот вопрос задавался много раз, но ни один из ответов не кажется полезным, но проблема очевидна, потому что я проверил его на нескольких компьютерах. Ctrl+C НЕ убивает работающую программу в терминале (Ubuntu v10), даже если она должна. Интересно, может ли кто-нибудь на самом деле указать решение, которое действительно работает.

До сих пор я пробовал Ctrl+\, Ctrl+SysRq+K и многое другое - ничего не работает!

Единственное, что сработало, вроде, это Ctrl+Z, но это не так на самом деле убить / выйти из программы, но просто помещает ее в фоновый режим, и вам все равно нужно сделать kill %1, чтобы фактически убить ее.

Спасибо!

6
задан 14 June 2012 в 06:34

5 ответов

Я столкнулся с этой проблемой, когда у одного из пользователей был 10.04. Та же проблема обсуждалась здесь CTRL + C больше не работает в терминале

Однако вы можете завершить команду, используя CTRL + SHIFT + C

Похоже, команды копировать в буфер обмена и завершать переключали свои сочетания клавиш.

0
ответ дан 14 June 2012 в 06:34

На самом деле, многие программы не останавливаются на Ctrl+C, потому что все, что он делает, это создает исключение в текущем запущенном потоке. Многопоточные программы, а также программы с «В случае каких-либо исключений, идти вперед». вроде инструкции продолжатся. Правильный случай действий будет одним из:

  1. Использовать комбинацию клавиш Ctrl + Break.
  2. Нажмите Ctrl + Z. Это не остановит программу, но вернет вам командную строку. Затем сделайте ps -ax | grep *%program_name%*. Найдите строку, соответствующую той, которую хотите остановить. Первое целое число в строке будет идентификатором программы. Сделайте kill -9 %id%, чтобы наконец остановить это.
  3. Если программа также потребляет много ресурсов, вы можете использовать команду top в отдельном терминале, чтобы быстрее увидеть ID.
0
ответ дан 14 June 2012 в 06:34

Примечание. Отвечать и комментировать после комментариев ...

Я почти уверен, что это убьет большинство терминальных программ; конечно, он не уничтожит тех, кто форкирует новый процесс, а затем немедленно выдаст подсказку.

Некоторые программы могут перехватывать это прерывание и обрабатывать его так, как они хотят, или даже игнорировать его. Это может сильно зависеть от того, предназначена ли программа для запуска в терминале или из графического интерфейса.

Вот некоторые из программ, которые я только что попробовал в 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
0
ответ дан 14 June 2012 в 06:34

Первый: top (См. Номер PID программы, которую вы хотите прервать.)

Второй: kill PID

0
ответ дан 14 June 2012 в 06:34

Если Вы знаете название программы, можно использовать pkill в другом терминале. Например, если название программы mutt:

pkill mutt

завершится mutt программа, кто не ответил бы CTRL + C

0
ответ дан 22 October 2019 в 12:09

Другие вопросы по тегам:

Похожие вопросы: