0

可能重复:
Catch Ctrl-C in C

我正在编写一个 C 命令行程序并试图确保 ctrl-c 不会杀死它。关于我如何做到这一点的任何想法?

4

2 回答 2

7

当您在程序运行时按下 Ctrl-C 时,下面发生的事情是您的进程收到一个名为 SIGINT 的信号,当进程收到此信号时的默认操作是终止自身。
所以你的目标应该是修改这种行为:
使用该函数signal来捕获当 ctrl-c 时发送到你的进程的信号

你应该这样做:

signal(SIGINT, handler_function);//handler_function is a void returning function that takes one int paramter, you can do nothing there if you just want to prevent your process from terminating.


PS 这里是手册页以获取更多信息:D
PPS 如果您不熟悉什么是信号,请参阅此 wikipedia 页面,如果您发现那里有什么令人困惑的地方,请告诉我们。

于 2013-01-07T22:29:58.683 回答
4

关于我如何做到这一点的任何想法

忽略SIGINT使用 SIG_IGN 处置或在无操作处理程序中捕获它。在某些实现中,甚至还有一个sigignore函数。

无论如何,你应该没问题:

signal(SIGINT, SIG_IGN);

SIG_IGN在 C11-7.14 中指定,因此它具有可移植性。

于 2013-01-07T22:29:11.520 回答