windows环境下C++怎么用signal函数捕捉Ctrl C 10
我在网上找的好多都有这段代码while(1){cin>>ch;Sleep(10);if(cin.fail()){cin.clear();cin.sync();}}看不懂什...
我在网上找的好多都有这段代码
while(1)
{ cin>>ch;
Sleep(10);
if(cin.fail())
{cin.clear();
cin.sync();}
}
看不懂什么意思? 这和捕捉ctrl c 有关系吗? 展开
while(1)
{ cin>>ch;
Sleep(10);
if(cin.fail())
{cin.clear();
cin.sync();}
}
看不懂什么意思? 这和捕捉ctrl c 有关系吗? 展开
1个回答
展开全部
/*注册信号处理函数。给你个例子*/
#include <signal.h>
#include <Windows.h>
#include <iostream>
using namespace std;
void cs(int n)
{
if(n==SIGINT)
{
cout<<"\n你按下了ctrl+c"<<endl;
signal(SIGINT, cs);
return;
}
if(n==SIGBREAK)
{
cout<<"\n你按下了ctrl+break,现在退出程序\n";
exit(0);
}
}
int main()
{
char ch;
signal(SIGINT, cs); /*注册ctrl+c信号捕获函数*/
signal(SIGBREAK,cs); /*注册ctrl+break信号捕获函数*/
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;
void cs(int n)
{
if(n==SIGINT)
{
cout<<"\n你按下了ctrl+c"<<endl;
signal(SIGINT, cs);
return;
}
if(n==SIGBREAK)
{
cout<<"\n你按下了ctrl+break,现在退出程序\n";
exit(0);
}
}
int main()
{
char ch;
signal(SIGINT, cs); /*注册ctrl+c信号捕获函数*/
signal(SIGBREAK,cs); /*注册ctrl+break信号捕获函数*/
while(1)
{
cin>>ch;
Sleep(10);
if(cin.fail())
{
cin.clear();
cin.sync();
}
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询