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:

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");
    }
}
Dove ho sbagliato?