2

在许多情况下,我看到在从调用open分配文件描述符之后直接执行fstat调用:

fd = open(file, flags, mode);
fstat_result = fstat(fd, &stat_log);

如果已经执行了read first 调用, 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 回答