read
システムコールがデータ全体を読み取ったかどうかを知る必要があります。デフォルトread
では、バッファにデータがない場合、システム コールはブロックされますが、データが完全に読み取られたことは保証されません。正しい確認方法を教えてください。
man ページでは、read
システム コールは0
ファイルの終わりに達したときに戻ると言われていましたが、私もそれを試しましたread
が、まったく戻りませんでし0
た。
wr_cnt =write(fd, "AT+CGMI\r", sizeof("AT+CGMI\r"));
if(wr_cnt<0)
perror("Write to dev failed");
else
printf("No.of bytes written=%d\n",wr_cnt);
while(1)
{
//rd_cnt =read(fd, &str, 1);
if((rd_cnt =read(fd, &str, 1)) <=0)
{
perror("Read to dev failed");
printf("error no=%d\n",errno);
break;
}
printf("char =%c -> hex=%x rd_cnt=%d\n",str,str,rd_cnt);
sleep(3);
str=0;
}
if(rd_cnt==0)
printf("EOF met\n");