Переопределить Ctrl-C

Я должен переопределить сигнал Ctrl C и использовать его для печати сообщения. Программа не должна заканчиваться.

Пока что происходит то, что при нажатии Ctrl C он печатает сообщение, но завершает программу.

Когда я попросил своего профессора, он сказал мне сделать следующее: Вы должны сделать так, чтобы ваш обработчик сигналов не продолжал обрабатывать сигнал. Прямо сейчас сигнал обрабатывается вашим кодом, а затем переходит к родительскому обработчику.

Есть ли метод, который я должен добавить, или мне нужно переместить установщики сигналов куда-нибудь?

Это мой код на данный момент:

#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>  
#include <sys/types.h>
#include <signal.h> 
#include "Input.h"
#include "CircleBuff.h"

//void handler_function(int signal_id);

void catch_int(int sig_num){

    //reset the signal handler again to catch_int, for next time
    signal(SIGINT, catch_int);
    //print message
    printf("Print History");
    fflush(stdout);
}

void printHistory(CircleBuff hist){
    cout << "Complete History:\n" << endl;
    hist.print();
    cout << endl;
}

int main(int argc, char** argv){

  struct sigaction signal_action;                /* define table */
  signal_action.sa_handler = catch_int;   /* insert handler function */
  signal_action.sa_flags = 0;                    /* init the flags field */
  sigemptyset( &signal_action.sa_mask );     /* are no masked interrupts */
  sigaction( SIGINT, &signal_action, NULL ); /* install the signal_action */

  do{


  //My code: where the value report will be assigned within.

  } while(report != 1)

}
12
задан udondan 18 March 2015 в 05:10
поделиться