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.
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.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(); } }

Rispondi quotando
. Ancora ne devo fare di strada. Ma ad ogni modo so che il programma è stato scritto bene per le mie conscenze. Grazie dell'aiuto
