来回打印

时间:2015-02-14 22:54:45

标签: c++

#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;
}

更改打印和第四。请帮忙。

2 个答案:

答案 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'

我建议重构您的解决方案。