Das Problem, das ich habe, ist, dass, wenn zum Beispiel sagt, dass der Benutzer 7 eintritt, dann zeigt das Display:Printing Fibonacci mit fork()
0 11 2 3 5 8 13 21 child ends.
Ich kann nicht scheinen, um herauszufinden, wie die 11 zu fixieren und warum Zeigt es so viele Zahlen in der Sequenz an! Kann jemand helfen?
Die Nummer der Sequenz wird in der Befehlszeile angegeben. Wenn beispielsweise 5 bereitgestellt wird, werden die ersten fünf Zahlen in der Fibonacci-Sequenz vom Kindprozess ausgegeben. Da die Eltern- und Kindprozesse eigene Kopien der Daten haben, muss das Kind die Sequenz ausgeben. Veranlassen Sie, dass der übergeordnete Benutzer den Aufruf wait() aufruft, um darauf zu warten, dass der untergeordnete Prozess beendet wird, bevor das Programm beendet wird. Führen Sie die erforderliche Fehlerprüfung durch, um sicherzustellen, dass eine nicht negative Zahl in der Befehlszeile übergeben wird.
#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;
}
Nein. Ellen fehlt wirklich der weiße Raum zwischen ihnen. Schauen Sie vorsichtig den ersten Druck ... – dmckee
Ja, das ist, was ich dachte, aber alle anderen Elemente der Sequenz sind durch Leerzeichen getrennt, und dann habe ich immer noch das Problem von zu vielen Elementen, 9 Elemente angezeigt, wenn nur 7 angezeigt werden sollte wenn 7 vom Benutzer eingegeben wurde – Ellen