当可执行文件停止响应Ctrl + C时,这意味着什么?

时间:2010-11-22 02:42:38

标签: c debugging gdb valgrind

我一直在玩一些调试并编写了一些C代码,这些代码执行了许多与Valgrind一起运行的指针相关操作(作为Valgrind工具)。在过去的一个小时里,我改变了一些东西,结果程序执行正常,但在我尝试终止它时停止响应Ctrl + C.

我尝试通过gdb运行程序并仍然观察到相同的行为。有人能告诉我是什么引发了这种行为吗?

UPDATE :我认为这是导致错误的无限递归,但我仍然很好奇它为什么不响应命令。

2 个答案:

答案 0 :(得分:2)

非常严重挂起的程序。尝试打开另一个终端并执行

kill -SIGINT `pidof program-name`

(如果-SIGINT不起作用,请转到-SIGTERM-SIGKILL(警告SIGKILL 立即终止 清理))

答案 1 :(得分:1)

至于如何这可能发生,当希望实际处理中断,比如做一些清理时,它会注册自己的中断处理程序而不是默认处理程序(通常只需调用exit()abort(),具体取决于具体的中断)。如果该中断存在错误,则会发生处理程序,但程序实际上并未按预期工作。因为杀掉程序的唯一方法是发送一个中断,然后你根本就不能杀掉程序。

嗯,实际上,有一个中断你无法用SIGKILL执行此操作。您无法在程序中执行任何操作,以防止通过立即调用abort()

来处理它