编写一个在按下 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
广告