发生错误后,我perror()
自然会调用 。但是当我这样做时,我遇到了分段错误,或者 printf("error: %s\n", strerror(errno));
我不知道发生了什么。
int fd;
if((fd = open(FILENAME, O_RDONLY)) == -1) {
perror("fbi");
exit(1);
}
for(;;) {
readed = read(fd, buffer, BUFSIZE);
if(readed == 0)
break;
if(readed == -1) {
perror("fbi"); // <- here's the error
exit(1);
}
如何解决这个问题?
更新:
printf("%d\n", errno); // given 9
更新2:
看起来与recv()
函数中传递的缓冲区大小有关系。如果BUFSIZE
是1
,给出上述错误。但是如果BUFSIZE
是例如,128
没有错误。有人可以解释这种行为吗?