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

tec*_*ert 7 10.04 command-line

好吧,我不知道为什么,但是我看到这个问题被问了很多次,但似乎没有一个答案有帮助,但问题很明显,因为我在几台计算机上验证过。 Ctrl+C即使它应该终止,也不会终止终端(Ubuntu v10)中正在运行的程序。我想知道是否有人可以指出一个真正有效的解决方案。

到目前为止,我已经尝试过Ctrl+\, Ctrl+SysRq+K, 等等 - 没有任何效果!

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

谢谢!

Mar*_*ied 6

注意:在评论后回答和...

我很确定它会杀死大多数终端程序;当然,它不会杀死那些fork一个新进程的人,然后立即返回提示。

一些程序可能会捕捉到这个中断并按照他们想要的方式处理它,甚至忽略它。这可能在很大程度上取决于程序是设计为在终端中运行还是在 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
Run Code Online (Sandbox Code Playgroud)


Bar*_*ino 5

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

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