我遇到的问题是,例如当用户输入 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;
}