programma base per i segnali
codice:
#include<unistd.h>
#include<stdio.h>
#include<signal.h>

void handler(int x){
if(SIGALRM==x) printf("sono il padre e ogni due secondi ricevo SIGALRM\n");
if(SIGINT==x) printf("sono il padre e mi hai mandato SIGINT ( ctrl+c )\n");
if(SIGCHLD==x) printf("sono il padre, sono passati 10 sec e mi è morto il figlio\n");
}
int main(){
int pid=fork();
if(pid==0){
printf("sono il figlio, aspetto 10 sec e mi ammazzo (avvertendo mio padre con SIGCHLD)\n");
sleep(3);
_exit(0);
}
else{
signal(SIGALRM,&handler); //con signal() installo i gestori
signal(SIGINT,&handler);
signal(SIGCHLD,&handler);
while(1){alarm(2);pause();}
}
}
SIGALRM lo manda alarm()
SIGINT come molti altri segnali lo mandi con combinazioni di tastiera
SIGCHLD viene mandato automaticamente al padre quando gli muore un figlio

spero di averti chiarito