У меня проблема в том, что когда, например, пользователь вводит 7, на дисплее отображается:
0 11 2 3 5 8 13 21 child ends.
Я не могу понять, как исправить число 11 и почему оно отображает столько чисел в последовательности! Кто-нибудь может помочь?
Номер последовательности будет указан в командной строке. Например, если указано 5, первые пять чисел в последовательности Фибоначчи будут выведены дочерним процессом. Поскольку родительский и дочерний процессы имеют свои собственные копии данных, дочернему процессу необходимо будет вывести последовательность. Попросите родителя вызвать вызов wait (), чтобы дождаться завершения дочернего процесса перед выходом из программы. Выполните необходимую проверку ошибок, чтобы убедиться, что в командной строке передано неотрицательное число.
#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;
}