Faire des enfants processus d'attente jusqu'à réception du parent signal

Je veux créer des N les enfants d'un parent. Je veux que tous les enfants de départ (une fonction de mesure du temps) en même temps. Alors j'ai mis la fonction dans un gestionnaire de signal et lorsque le parent terminer la création (fourche) tous les enfants, il envoie le signal (à l'aide de tuer(children_id)) à tous les enfants à laisser faire démarrer. Le code est ci-dessous, mais il ne fonctionne pas comme prévu. Plus précisément, il fourchue tous les enfants, mais ne les exécute pas la fonction "measure_time". Cette fonction n'est pas la chose, mais d'enregistrer des temps d'exécution et à imprimer.
Quelqu'un pourrait-il me faire savoir si je fais quelque chose de mal?

    int n_task = 4;
    for (i = 0; i < n_task; i++){
            pid = fork();
            if (pid < 0){
                    printf("cannot fork!\n");
            } else
            if (pid == 0){ //child
                    printf("printed from child [%d]\n", getpid());                        
                    signal(SIGUSR1, measure_time); //measure_time is a function
                    exit(0);
            } else {
                    pid_array[i] = pid;
            }
    }

    //This code is executed from parent only
    for (int i = 0; i < n_task; i++)
    {
            kill(pid_array[i], SIGUSR1);                
    }
Une raison pour laquelle vous êtes à l'aide de fork() et pas pthreads?
c'est un exercice qui nécessite l'utilisation de fork() et signal() ou sigaction() et kill()? Probablement la raison suffisante.
Ouais je suis juste en train de jouer avec fork().

OriginalL'auteur Zk1001 | 2013-11-10