在本节中,我们将看到如何用 C 编写一个不能被 Ctrl + C 键终止的程序。
Ctrl + C 产生键盘中断,并停止当前进程的执行。在这里,当我们按下 Ctrl + C 键时,它会打印一条消息然后继续执行。要使用此功能,我们将使用 C 中的信号处理技术。当按下 Ctrl + C 时,它会生成 SIGINT 信号。以下列表中还有一些其他信号及其功能。
信号 | 描述 |
---|---|
SIGABRT | 表示异常终止 |
SIGFPE | 表示浮点异常 |
SIGILL | 指示无效指令。 |
SIGINT | 表示发送到程序的交互式注意请求。 |
SIGSEGV | 表示无效的内存访问。 |
SIGTERM | 表示发送给程序的终止请求。 |
这里我们将使用标准的 C 库函数signal()来处理这些信号。
#include <stdio.h> #include <signal.h> void sigint_handler(int signum) { //SIGINT 处理程序 //重置处理程序以在下次捕获 SIGINT。 signal(SIGINT, sigint_handler); printf("Cannot be stopped using Ctrl+C \n"); fflush(stdout); } main () { signal(SIGINT, sigint_handler); while(1) { //创建无限循环 } }输出结果
Cannot be stopped using Ctrl+C Cannot be stopped using Ctrl+C