У меня есть некоторые трудности с этим кодом. Мне нужно получить всю информацию из канала на его конце. Но я получаю ошибку segfault.
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
int main(void){
int tube[2];
if(pipe(tube) == -1){
perror("Erreur");
exit(1);
}
dup2(tube[1],1);
printf("Few lines \n");
printf("of an undefined size. \n");
while (!feof(tube[0])) {
char temp = fgetc(tube[0]);
printf("chaine : %c\n", temp);
}
return 0;
}
Если у вас есть идея, как я могу справиться с этой проблемой, пожалуйста, объясните.
fgetc()
являетсяFILE *
. Ваш код передаетint
. Это вводит неопределенное поведение. Кроме того,fgetc()
возвращаетint
, а неchar
. Наконец, есть много хороших объяснений того, почему цикл в стилеwhile (!feof())
является плохой техникой — Google поможет вам найти его. - person Peter   schedule 24.04.2018