编写一个在按下Ctrl + C时不会终止的C程序。它显示一条消息“无法使用Ctrl + c终止”并继续执行。
为此,我们可以在C中使用信号处理。当按下Ctrl + C时,将生成SIGINT信号,我们可以捕获该信号并运行定义的信号处理程序。 C标准在signal.h头文件中定义了以下6个信号。
SIGABRT –异常终止。
SIGFPE –浮点异常。
SIGILL –无效指令。
SIGINT –发送给程序的交互式关注请求。
SIGSEGV –无效的内存访问。
SIGTERM –发送到程序的终止请求。
指定了其他信号Unix和类似Unix的操作系统(例如Linux)定义了15种以上的其他信号。参见http://en.wikipedia.org/wiki/ Unix_signal#POSIX_signals
标准C库函数signal()可用于为上述任何信号设置处理程序。
/* A C program that does not terminate when Ctrl+C is pressed */
#include
#include
/* Signal Handler for SIGINT */
void sigintHandler(int sig_num)
{
/* Reset handler to catch SIGINT next time.
Refer http://en.cppreference.com/w/c/program/signal */
signal(SIGINT, sigintHandler);
printf("\n Cannot be terminated using Ctrl+C \n");
fflush(stdout);
}
int main ()
{
/* Set the SIGINT (Ctrl-C) signal handler to sigintHandler
Refer http://en.cppreference.com/w/c/program/signal */
signal(SIGINT, sigintHandler);
/* Infinite loop */
while(1)
{
}
return 0;
}
输出:两次按Ctrl + C组合键时
Cannot be terminated using Ctrl+C
Cannot be terminated using Ctrl+C
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。