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

void bye(int sig);
int main()
{
  int pid;		

  if ((pid=fork()) < 0)
    {
      perror("fork error");
      exit(1);
    }
  else
   if (pid == 0)		
    {
        // install
        signal(SIGUSR1, bye);

      /* il figlio dorme fino a quando riceve il segnale SIGKILL, poi muore*/
      for (;;) {}
      printf("questo messaggio non dovrebbe mai essere visualizzato!\n");
      exit(0);
    }
  else
    {
      /* il padre invia un segnale SIGKILL al figlio */
      sleep(3);
      kill(pid, SIGUSR1);
      printf("\nsono il padre e ho ucciso il figlio!!\n");
      exit(0);
    }
}

void bye(int sig) {
    printf("BYE\n");
    exit(0);
}
