读取后的fstat行为

时间:2014-03-07 18:14:34

标签: c file-io fstat

在很多情况下,我看到在通过调用打开分配文件描述符后直接执行 fstat 调用:

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

如果首先调用读取,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)

This fstat document似乎并不表示文件描述符需要引用尚未读取的文件。你有什么要说明的吗?

1 个答案:

答案 0 :(得分:3)

您可以在打开文件后但在fstat之前读取文件。唯一会改变的是由于该读取而改变的任何属性。唯一的候选者是atime,这将是阅读的时间,可能晚于open的时间。