Rene Albrecht
Erfahrenes Mitglied
Hallo,
ich versuche gerade, mich in die Interprozesskommunikation per Pipes einzuarbeiten und stosse auf ein (wahrscheinlich einfaches) Problem: Ein Programm namens child2 gibt etwas über stdout aus, dass ich durch ein Programm parent auslesen möchte. Folgende Code funktioniert leider nicht:
Kann mir jemand erklären, warum das so nicht funktioniert?
Gruß
René
ich versuche gerade, mich in die Interprozesskommunikation per Pipes einzuarbeiten und stosse auf ein (wahrscheinlich einfaches) Problem: Ein Programm namens child2 gibt etwas über stdout aus, dass ich durch ein Programm parent auslesen möchte. Folgende Code funktioniert leider nicht:
Code:
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#define MAX 512
int main(void) {
int p2c[2];
pid_t pid;
char buffer[512];
int n;
pipe(p2c);
pid = fork();
if (pid == -1) {
fprintf(stderr,"Fehler: fork()\n");
exit (1);
}
if (pid == 0) { // Kindprozess
dup2(p2c[1],1);
close(p2c[0]);
execlp("child2","child2",NULL);
}
else { // Vaterprozess
close(p2c[1]);
n=read(p2c[0],&buffer,512);
printf("%d Zeichen gelesen\n",n);
close(p2c[0]);
wait(0);
}
exit (0);
}
Kann mir jemand erklären, warum das so nicht funktioniert?
Gruß
René