#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <err.h>

void
sigHandler(int sig)
{
    static int count = 0;

    if (sig == SIGINT) {
        count++;
        printf("Caught SIGINT (%d)\n", count);
    } else if (sig == SIGQUIT) {
        printf("Caught SIGQUIT!\n");
    }
    else if (sig == SIGTERM) {
        printf("Caught SIGTERM - that's all folks!\n");
    }
}

int
main(int argc, char *argv[])
{
    if (signal(SIGTERM, sigHandler) == SIG_ERR)
        err(EXIT_FAILURE, "signal() - SIGTERM");

    if (signal(SIGINT, sigHandler) == SIG_ERR)
        err(EXIT_FAILURE, "signal() - SIGINT");

    if (signal(SIGQUIT, sigHandler) == SIG_ERR)
        err(EXIT_FAILURE, "signal() - SIGQUIT");


    printf("PID=%ld\n", (long) getpid());
    for ( ; ; )
        pause();

    exit(EXIT_SUCCESS);
}
