1401-11-20 10:50 سری فیبوناچی در C
xavier12

 
این تابع تعداد عبارت های دنباله فیبوناچی را در فرآیند فرزند می پذیرد، یک آرایه ایجاد می کند و خروجی را از طریق لوله به والد هدایت می کند. والدین باید صبر کنند تا کودک سری فیبوناچی را ایجاد کند. متن دریافتی همیشه -1 را نشان می دهد، اگرچه متن ارسالی تعداد اعداد *4 وارد شده را نمایش می دهد که قابل قبول است.

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

int* fibo(int n)
{
int* a=(int*)malloc(n*sizeof(int));
*(a+0)=0;
*(a+1)=1;
int i;
for(i=0; i<n-2; i++)
{
*(a+i+2)=*(a+i)+(*(a+i+1));
}
return a;
}

int main()
{
int* fib;
int fd[2];
pid_t childpid;
int n,nb;

int k = pipe(fd);
if(k == -1)
{
printf("Pipe failed");
return 0;
}

childpid = fork();
if(childpid == 0)
{
printf("Enter no. of fibonacci numbers");
scanf("%d",&n);
fib = fibo(n);
close(fd[0]);
nb = (fd[1], fib, n*sizeof(int));
printf("Sent string: %d \n",nb);
exit(0);
}
else
{
wait();
close(fd[1]);
nb = read(fd[0], fib, n*sizeof(int));
printf("Received string: %d ",nb);
}
return 0;
}