Salve.
Devo fare un programma in C che genera due processi figli: il padre genera 10 numeri casuali, se il numero è pari manda un segnale al processo figlio1, se è dispari manda un segnale al processo figlio2.
I segnali sono gestiti con l'apposito handler.
Io ho scritto questo, compila ma non funziona:
Dove ho sbagliato?codice:#include <signal.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <time.h> void handler(int); int main(){ int pid1,pid2; int cont,random_n; srand(time(NULL)); /* creazione primo figlio */ pid1 = fork(); if(pid1 != 0){ /* se sono il padre */ pid2 = fork(); /* genero il secondo figlio */ if(pid2 == 0){ /* se sono il secondo figlio*/ signal(SIGUSR2,handler); for(;;); /* rimango in attesa del segnale */ } else /* sono il padre */ { for(cont = 0;cont < 10; cont++){ random_n = rand(); if(random_n %2 == 0){ /* mando un segnale al primo figlio*/ kill(pid1,SIGUSR1); } else { kill(pid2,SIGUSR2); /* mando un segnale al secondo figlio */ } } } } else { /* sono il primo figlio */ signal(SIGUSR1,handler); for(;;); } kill(pid1,SIGKILL); kill(pid2,SIGKILL); return 0; } void handler(int sig){ if(sig==SIGUSR1){ printf("Segnale inviato al primo processo figlio\n"); printf("Il numero e' pari\n"); } else { printf("Segnale inviato al secondo processo figlio\n"); printf("Il numero e' dispari\n"); } }

Rispondi quotando
ciao
