Ausführen dieses c-Programms, das die exponentielle Taylorexpansion auswertet, mit einem untergeordneten Prozess, der in jeder Schleife erstellt wird und eine Ziffer dieser Summe an den übergeordneten Wert zurückgibt, führt mich zu einem BAD FILE DESCRIPTOR ERROR. obwohl ich nicht weiß, warum, ich denke, das Problem kann in der Art sein, wie ich das Rohr in der Schleife öffnen und schließen und so.Fehler in Dateideskriptoren einer Pipe
Mein Code ist:
#include<unistd.h>
#include<stdio.h>
#include<sys/wait.h>
#include<stdlib.h>
int main()
{int i; pid_t id;
int count=1;
int fact=1;
int N;
double S=1;double s1=0; double div;double x;
int p[2];
printf("Input x and N : \n");
scanf("%lf %d",&x,&N);
if(pipe(p) == -1)
{perror("Error opening pipe");
return -1; }
else{
for(i=1;i<=N;i++)
{ id=fork();
if(id==0)
{ close(p[0]);
while(count<i)
{ fact*=(fact+1);
x*=x;
count++;
}
div=x/fact;
if(write(p[1],&div,sizeof(double))!=sizeof(double))
perror("file writing error");
exit(0);
}
else {
wait(NULL);
close(p[1]); \\ ***<-- Problem here***
if(read(p[0],&s1,sizeof(double))!=sizeof(double))
{
perror("file become empty");
return -1;}
S+=s1;
}}}
printf("Sum = %lf",S);
return 1;}
immer noch, jetzt sowohl beim Lesen und Schreiben, ich empfange die gleiche Fehlermeldung –