很多时候我们写的程序是一个一直运行的,调试的时候,我们直接按ctrl+c终止程序,那么在while后面的一些close函数的调用,在没有设置中断函数的时候,是不会被执行的。
错误例子
#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
while(1){
//sleep(1);
}
printf("closing\n");
}
编译运行,ctrl+c的结果如下:(并不输出closing信息)
cwd@cwd:~/code/test$ g++ test.cpp -o test
cwd@cwd:~/code/test$ ./test
^C
正确的处理方式是自己设置SIGINT的处理函数
正确例子
采用信号集方式
#include <iostream>
#include <unistd.h>
#include <signal.h>
#include <string.h>
#include <assert.h>
using