2

多くの場合、 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 ドキュメントは、ファイル記述子がまだ読み取られていないファイルを参照する必要があることを示していないようです。そうでないことを示す何かを見つけましたか?

4

1 に答える 1

4

ファイルを開いた後、fstat. 変更される唯一のものは、その読み取りの結果として変更される属性のいずれかです。唯一の候補は でatime、これは読み取りの時間であり、 の時間よりも遅い可能性がありますopen

于 2014-03-07T18:18:07.107 に答える