L'impression de Fibonacci avec fork()

Le problème que j'ai c'est que quand dire, par exemple, l'utilisateur entre 7, puis l'affichage indique:

0 11 2 3 5 8 13 21 child ends.

Je n'arrive pas à comprendre comment résoudre le 11 et pourquoi est-ce que l'affichage du nombre de numéros dans l'ordre! Quelqu'un peut-il aider?

Le numéro de la séquence sera fourni dans la ligne de commande. Par exemple, si 5 est fourni, les cinq premiers nombres de la suite de Fibonacci sera sortie par le processus de l'enfant. Parce que le processus parents et enfants ont leur propre copie de données, il sera nécessaire pour l'enfant à la sortie de la séquence. Ont le parent invoquer le wait() appel à attendre que le processus de l'enfant à terminer avant de quitter le programme. Effectuer la nécessaire vérification des erreurs pour s'assurer qu'un nombre non négatif est passé sur la ligne de commande.

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
   int a=0, b=1, n=a+b,i,ii;
   pid_t pid;

   printf("Enter the number of a Fibonacci Sequence:\n");
   scanf("%d", &ii);

   if (ii < 0)
      printf("Please enter a non-negative integer!\n");
   else
   {
      pid = fork();
      if (pid == 0)
      {
         printf("Child is producing the Fibonacci Sequence...\n");
         printf("%d %d",a,b);
         for (i=0;i<ii;i++)
         {
            n=a+b;
            printf("%d ", n);
            a=b;
            b=n;
         }
         printf("Child ends\n"); 
      }
      else 
      {
         printf("Parent is waiting for child to complete...\n");
         wait(NULL);
         printf("Parent ends\n");
      }
   }
   return 0;
}

OriginalL'auteur Ellen | 2009-04-05