// Source: https://users.cs.cf.ac.uk/Dave.Marshall/C/node24.html
// C program to implement sighup(), sigint() 
// and sigquit() signal functions 

#include <signal.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <unistd.h> 

void sighup() { // handler for SIGHUP
     signal(SIGHUP, sighup); 
     printf("CHILD: I have received a SIGHUP\n"); } 
  
void sigint() { // handler for SIGINT
     signal(SIGINT, sigint); /* reset signal */
     printf("CHILD: I have received a SIGINT\n"); } 
  
void sigquit() { // handler for SIGQUIT
    printf("My DADDY has Killed me!!!\n"); 
    exit(0); } 

void main() { 
     int pid; 
     signal(SIGHUP, sighup); 
     signal(SIGINT, sigint); 
     signal(SIGQUIT, sigquit); 
     /* get child process */
     pid = fork (); 
     if (pid < 0) { 
          perror("fork"); 
          exit(1); } 
     if (pid == 0) { for (;;);  } 
     else { 
        printf("\nPARENT: sending SIGHUP\n\n"); 
        kill(pid, SIGHUP); 
        sleep(3); // pause for 3 secs 
        printf("\nPARENT: sending SIGINT\n\n"); 
        kill(pid, SIGINT); 
        sleep(3); // pause for 3 secs 
        printf("\nPARENT: sending SIGQUIT\n\n"); 
        kill(pid, SIGQUIT); 
        sleep(3); }}  
        
        
        
  

