多くの場合、 openへの呼び出しからファイル記述子が割り当てられた直後にfstat呼び出しが実行されるのを見てきました。
fd = open(file, flags, mode);
fstat_result = fstat(fd, &stat_log);
最初にreadの呼び出しを既に実行している場合、fstat の動作は異なりますか?
fd = open(file, flags, mode);
read_result = read(fd, buffer, buffersize)
fstat_result = fstat(fd, &stat_log);
そして、「動作が異なる」とは、つまり、fstat の戻り値、またはそのシナリオでの「struct stat」バッファー出力の何かが異なることを意味します。
stat_log のサイズに関連するメンバーのいずれかが、まだ読み取られていないファイルのサイズを表しているか?
ファイルの最後まで読み取った場合、その後 fstat を呼び出すと失敗しますか? (fstat は -1 を返します)
この fstat ドキュメントは、ファイル記述子がまだ読み取られていないファイルを参照する必要があることを示していないようです。そうでないことを示す何かを見つけましたか?