/*---------------------------------------------------------------
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);
}