Ciao a tutti!!

Devo scrivere un programmino che generi un certo numero, preso in input, di figli e ne aspetti solo uno prima di uscire. Io ho scritto questo codice:

codice:
#include <sys/wait.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]){
    pid_t pid;
    int status, children, i;
    if(argc!=2){
       printf("Usage: wait <number of children>");
       exit(1);
    }
    children=atoi(argv[1]);
    for(i=0; i<children; ++i){
       if((pid = fork()) < 0)
           perror("Fork failed");
       else if(pid == 0){
          printf("Sono il figlio e sto scrivendo qualcosa su stdout\n");
          exit(0);
       }
       else
          printf("Ho generato il figlio %d con pid %d\n",i+1,pid);
    }
    if(wait(&status) != pid){
       printf("Wait failed\n");
       exit(1);
    }
    printf("Uno dei miei figli ha finito, quindi finisco pure io\n");
    exit(0);
}
Il problema è che quando lo faccio partire mi stampa per n volte "Sono il figlio e sto scrivendo qualcosa su stdout" e poi il controllo if(wait(&status) != pid) fallisce. Non si sa chi verrà eseguito per primo se il figlio o il padre (infatti dipende dall'implementazione del sistema) ma a me sembra che venga eseguito sempre per primo il figlio. Come faccio a fare una cosa del genere?

Grazie.