在C中按“Ctrl + C”时如何防止控制台应用程序终止?

时间:2013-11-18 11:57:59

标签: c winapi mingw32

我发现在Windows上从GCC编译的控制台应用程序总是在按 Ctrl + C 时终止。

是否有任何可行的方法可以阻止控制台应用程序在按 Ctrl + C 时终止?

2 个答案:

答案 0 :(得分:3)

当用户按下控制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);
   ...

答案 1 :(得分:1)

安装SIGINT处理程序。默认情况下,此处理程序设置为终止您的进程。对于Windows,您可以使用特定于Win32的SetConsoleCtrlHandler(..)注册。

查看上面链接的文档,尤其是示例。