エラーが発生した後は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 no error の場合。誰かがこの動作を説明できますか?