【发布时间】:2018-10-04 20:38:01
【问题描述】:
我在使用这段代码时遇到了一些困难。 我需要从管道末端获取所有信息。 但是,我收到一个段错误。
#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())样式循环是不好的技术 - 谷歌会帮你找到一个。