Salve a tutti. Devo scrivere il seguente programma in C su Linux. Deve ricevere in input due interi A e B. Se il processo riceve un segnale SIGUSR1 ne stampo la somma. Con SIGUSR2 ne stampo la differenza. Il programma esce con Ctrl^C. Ho sviluppato il codice nel seguente modo.

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

int a,b,somma,diff;  

void handler(int sig){

if(sig==SIGUSR1)
printf("la somma è: %d\n",somma); 
else if(sig==SIGUSR2)
printf("la differenza è: %d\n",diff); 
}  

void main(){ 
 
signal(SIGUSR1,handler); 
signal(SIGUSR2,handler);  

while(1){ 
printf("digita il numero a:\n"); 
scanf("%d",&a); 
printf("digita il numero b:\n"); 
scanf("%d",&b); 
somma=a+b; 
diff=a-b; 
printf("manda il segnale al processo %d\n",getpid()); 
pause(); 
} 
}
All'invio del segnale mediante kill non succede nulla. Riesco solo a far terminare il programma con Ctrl^C. Devo ammettere che la materia mi risulta un pò ostica ma se non riesco a capire in che modo impostare un semplice esercizio come questo, non potrò andare agli step successivi. Spero che qualcuno mi possa far capire meglio come funzionano i processi e i segnali sotto Linux. Grazie.