C++里面的signal函数的问题
用的是C++的控制台,想按下ctrl+c之后主函数可以重新开始而不是关闭掉程序,尝试了signal这个函数,的确是能做到了,可是现在有一个问题,就是我发现信号只能捕捉一次,在使用了一次,重新开始了主函数之后,却再也无法正常使用,下面贴代码
#include <signal.h>
#include <Windows.h>
#include <iostream>
using namespace std;
void cs(int n)
{ signal(SIGINT, cs);
int main();
if(n==SIGINT)
{cout<<"\n你按下了ctrl+c"<<endl;
main ();}
}
int main()
{ void cs(int n);
char ch;
cout<<"ab"<<endl;
signal(SIGINT, cs);
while(1)
{ cin>>ch;
Sleep(10);
if(cin.fail())
{cin.clear();
cin.sync();}
}
return 0;
}
#include <signal.h>
#include <Windows.h>
#include <iostream>
using namespace std;
static int ctrl_c_pressed = 0;
void cs(int n)
{
signal(SIGINT, cs);
if(n==SIGINT)
{
cout<<"\n你按下了ctrl+c"<<endl;
ctrl_c_pressed = 1;
}
}
int main()
{
void cs(int n);
char ch;
main_start:
cout<<"ab"<<endl;
signal(SIGINT, cs);
while(1)
{
cin>>ch;
Sleep(10);
if(cin.fail())
{
cin.clear();
cin.sync();
if(ctrl_c_pressed)
{
ctrl_c_pressed = 0;
goto main_start;
}
}
}
return 0;
}