/*---------------------------------------------------------------
                             segnale

Il  programma  intercetta  un  segnale e lo gestisce. La funzione
signal riceve 2 parametri: il  primo e' il nome simbolico del se-
gnale  da intercettare; il secondo e' (il puntatore al)la funzio-
ne che deve gestirlo.
Nello specifico viene intercettato il segnale  SIGTSTP,  generato
da CTRL/Z. Normalmente questo segnale provoca l'arresto immediato
del processo. Poi si puo' farlo proseguire in  background  oppure
in  foreground.  Qui  invece il segnale viene intercettato: viene
emesso un messaggio d'errore e quindi il  programma  finisce  (e'
una scelta, ovviamente).


     Modalita' d'uso

Si  battono  caratteri singoli (seguiti da Invio o Enter). Quando
se he ha abbastanza, battere  CTRL/Z. Il segnale viene  intercet-
tato e gestito (viene notificata l'intercettazione). Il programma
poi termina.
---------------------------------------------------------------*/
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
  void   beccato (int);

  (void) signal (SIGTSTP, beccato);
  for (;;)
    (void) fgetc (stdin);
  exit (EXIT_SUCCESS);
}

void beccato (int sig)
{
  fprintf (stderr, "(CTRL/Z) intercettato - fine immediata\n");
  exit (sig);
}