编写一个在按下 Ctrl+C 时不会终止的 C 程序


在本节中,我们将学习如何编写一个在按下 Ctrl + C 键时不会终止的 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) { //Handler for SIGINT
   //Reset handler to catch SIGINT next time.
   signal(SIGINT, sigint_handler);
   printf("Cannot be stopped using Ctrl+C 
");    fflush(stdout); } main () {    signal(SIGINT, sigint_handler);    while(1) { //create infinite loop    } }

输出

Cannot be stopped using Ctrl+C
Cannot be stopped using Ctrl+C

更新于:2019年7月30日

1K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告