Warum funktioniert diese Pipe in C nicht?

1 Antwort

Der Teil, wo Du Dir die pipe (pdf) besorgst wäre grundlegend natürlich relevant. Aber seis drum.

Fehlerbehandlugn scheint nicht so ganz Deines zu sein, aber schaun wir mal:

for (int m = 0; m < n; m++) {
  int c = fork();
  if (c == 0) { /* child */
      [...] 
  } else { /* parent */
   close(pdf[1]); /* close write end */
   char buf[10];
   memset(buf,0,10);
   wait(NULL);
   read(pdf[0], buf, 10);
####
   close(pdf[0]); /* close read end */
####
   printf("%s\n", buf);
   }
 }

Auch unter der Annahme der Wiederverwendung der Pipe, wäre es vermutlich schon ganz gut, wenn deren Leseende noch offen wäre, nach dem nächsten fork().