/* signal.C */

#include <iostream>
using namespace std;
#include <signal.h>
#include <unistd.h>
#include <stdlib.h>

int n;

main(int argc, char **argv)
{
    void InterruptHandler(int), InitHandler(int);

    n = 0;

    signal(SIGINT, InterruptHandler); /* signal 2 */
    signal(SIGHUP, InitHandler);      /* signal 1 */
    while (1) {
        n++;
        sleep(1);
    }
}

void InterruptHandler(int signum)
{
    cout << "Received " << signum << ", value of n is " << n << '\n';
    exit(0);
}

void InitHandler(int signum)
{
    cout << "Received " << signum << ", resetting the value of n to zero\n";
    n = 0;
}
