#include <iostream>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
using namespace std;
void handlera(int signum){
int main();
}
void handler(int signum){
int i=0;
signal(SIGINT, handlera);
while(1){
i++;
cout<<"processing"<<i<<endl;
sleep(2);
}
exit(signum);
}
int main()
{
signal(SIGINT, handler);
while(1){
sleep(1);
}
return 0;
}
更改打印和第四。请帮忙。
答案 0 :(得分:0)
我不确定你在这里想要达到的目标,但为什么不尝试这样的事情:
int flag=0;
int i=0;
void handler(int signum){
signal(SIGINT, handler);
flag = 1-flag;
i=0;
}
int main()
{
signal(SIGINT, handler);
while(1){
if (flag==0){
sleep(1);
}else{
i++;
cout<<"processing"<<i<<endl;
sleep(2);
}
}
return 0;
}
这是一个更好的代码设计,应该提供所需的行为......
答案 1 :(得分:0)
int main()
是一个声明,而不是函数调用。
但是你不允许再打电话给main()
,所以,如果你把它改成main()
,你的程序将无法编译:
error: ISO C++ forbids taking address of function '::main'
我建议重构您的解决方案。