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