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

void sig_handler(int signo);

int
main(int argc, char *argv[])
{
    void (*sig_ign)(int);

    sig_ign = SIG_IGN;

    printf("disable SIGINT and SIGQUIT.\n");
    printf("for enabling them send SIGUSR1 to PID=%ld\n", (long) getpid());

    signal(SIGINT, sig_ign);
    signal(SIGQUIT, sig_ign);
    signal(SIGUSR1, sig_handler);

    while (1)
        pause();

    exit(EXIT_SUCCESS);
}

void
sig_handler(int signo)
{
    void (*sig_dfl)(int);

    sig_dfl = SIG_DFL;
    signal(SIGINT, sig_dfl);
    signal(SIGQUIT, sig_dfl);

    printf("\nSIGINT and SIGQUIT restored to defaults\n");
}
