在很多情况下,我看到在通过调用打开分配文件描述符后直接执行 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似乎并不表示文件描述符需要引用尚未读取的文件。你有什么要说明的吗?
答案 0 :(得分:3)
您可以在打开文件后但在fstat
之前读取文件。唯一会改变的是由于该读取而改变的任何属性。唯一的候选者是atime
,这将是阅读的时间,可能晚于open
的时间。