【发布时间】:2013-12-01 13:41:11
【问题描述】:
我发现在 Windows 上从 GCC 编译的控制台应用程序总是在按下 Ctrl+C 时终止。
是否有任何可行的方法来防止控制台应用程序在按Ctrl+C时终止?
【问题讨论】:
我发现在 Windows 上从 GCC 编译的控制台应用程序总是在按下 Ctrl+C 时终止。
是否有任何可行的方法来防止控制台应用程序在按Ctrl+C时终止?
【问题讨论】:
当用户按下控制 C 时,会向您的进程发送一个信号 (SIGINT)。当大多数信号被发送到一个进程时,该进程必须要么处理信号,要么操作系统将杀死它。所以...您需要做的就是为 SIGINT 安装一个信号处理程序。
以下内容未经测试:
#include <signal.h>
static void ignore_control_c(int sig)
{
/* re-arm the signal handler but otherwise ignore the signal */
signal(sig, ignore_control_c);
}
int main(int argc, char *argv)
{
signal(SIGINT, ignore_control_c);
...
【讨论】:
#include<windows.h>,但是GCC报告了error: 'SIGINT' undeclared (first use in this function)
安装 SIGINT 处理程序。默认情况下,此处理程序设置为终止您的进程。对于 windows,您可以使用 Win32 特定的SetConsoleCtrlHandler(..) 注册。
查看上面链接的文档,尤其是示例。
【讨论】: