Nie mogę odczytać danych przekierowanych do potoku wejściowego, oto kod:
int fd[2];
int nbytes;
pid_t childpid;
char buffer[256];
int i = 0;
pipe(fd);
if((childpid = fork()) == -1) {
puts("FORK");
perror("fork");
exit(1);
}
if(childpid == 0) {
// NIE DZIALA, zwraca 0 -> read(fd[0], buffer, sizeof(buffer));
close(fd[0]);
fgets(buffer, 256, stdin);
write(fd[1], &buffer, 256);
exit(0);
} else {
close(fd[1]);
nbytes = read(fd[0], buffer, sizeof(buffer));
printf("Received data: %s | size: %d\n", buffer, nbytes);
}
Oczywiście czytanie z stdin nie ma sensu, gdyż o ile przekażemy do strumienia jakieś daje to wszystko ładnie działa. Jeśli natomiast nic nie przekażemy to mamy problem, gdyż program czeka na dane.
Zaznaczam chodzi o pobranie danych z wyjścia innego programu np. : ls -lt | ./moj_program.out