#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <signal.h>
//----------------------------------------------------------
void signal_handler (int signal)
{
    int   status;
    pid_t pid;
    if (signal == SIGCHLD)
      {
        pid = wait (&status);
        printf ("Il processo %i si è concluso restituendo "
                "il valore %x.\n",
                pid, WEXITSTATUS (status));
      }
}
//----------------------------------------------------------
int
main (void)
{
    pid_t  pid;
    //
    signal (SIGCHLD, signal_handler);
    //
    pid = fork ();
    if (pid == 0)
      {
        sleep (1);
        printf ("ciao!\n");
        exit (7);
      }
    printf ("Ho avviato il processo %i.\n", pid);
    //
    sleep (60);
    //
    return (0);
}