Ctrl+C 不会退出终端中正在运行的程序

Ctrl+C 不会退出终端中正在运行的程序

好吧,我不知道为什么,但我见过这个问题被问过很多次,但似乎没有一个答案有帮助,但问题很明显,因为我在几台电脑上验证了这一点。 Ctrl+C没有在终端(Ubuntu v10)中终止正在运行的程序,尽管它应该这样做。我想知道是否有人能真正指出一个真正有效的解决方案。

到目前为止我已经尝试了Ctrl+\、、Ctrl+SysRq+K以及更多——但都没有效果!

唯一能起作用的是Ctrl+Z,但它实际上并没有终止/退出程序,而只是将其置于后台,然后您仍然必须执行操作kill %1才能真正终止它。

谢谢!

答案1

注意:答案在评论之后...

我确信它会杀死大多数终端程序;当然,它不会杀死那些分叉新进程然后立即返回提示的程序。

有些程序可能会捕获此中断并以它们想要的方式处理它,甚至忽略它。这可能很大程度上取决于程序是设计为在终端中运行还是从 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

答案2

实际上,许多程序不会停止,Ctrl+C因为它所做的只是在当前正在运行的线程中创建一个异常。多线程程序以及带有“如果发生任何异常,继续前进”这类指令的程序将继续运行。动作的正确情况将是以下之一:

  1. 使用Ctrl + Break组合键。
  2. Ctrl + Z。这不会停止程序,但会返回命令提示符。然后,执行ps -ax | grep *%program_name%*。找到与您要停止的程序相对应的行。行中的第一个整数将是程序 ID。执行kill -9 %id%以最终停止它。
  3. 如果程序也消耗大量资源,您可以top在单独的终端中使用命令来更快地查看ID。

答案3

我的一个用户使用 10.04 时遇到了这个问题。这里讨论了同样的问题CTRL+C 在终端中不再起作用

但是您可以使用以下方式终止命令Ctrl+Shift+C

似乎复制到剪贴板和终止命令切换了它们的键盘快捷键。

答案4

第一步:(top查看要终止其运行的程序的PID号。)

第二:kill PID

相关内容