Cでファイル入出力するやり方はいろいろあるが、今回はバイナリ読み出しが必要なので低水準ファイル入出力を使うことに。
やはり、原理を理解してはいても失敗するものはするものだなぁと改めて思ってしまいました。
失敗内容の概要
とりあえず、コードはこんな感じ。思い切り端折ってはいるけど、教科書通りのやり方。
fd = open(argv[1], O_RDONLY);
while (1){
read_size = read(fd, buf, sizeof(buf));
if ( read_size == 0 ){
break;
}
}
で、このコードがどうも上手く動かない。
現象は、read_sizeを見るとbufサイズ分読まずにまちまちのバイトしか読んでこない、途中に読み飛ばされるバイトがある、200数バイト以降が読み出されない、等。