如何以纳秒精度检索文件时间?

时间:2010-08-02 08:27:23

标签: c posix stat timespec

我刚刚发现stat()调用和相应的struct stat不包含精度大于一秒的文件时间字段。要设置这些时间,有各种{f,l}utime{n,}s()函数,但不适合获取。

然后如何以纳秒精度获得这些时间,最好使用POSIX API?

2 个答案:

答案 0 :(得分:3)

stat本身返回的stat()结构已升级为POSIX.1-2008。

struct stat结构包含三个修改时间:

struct timespec st_atim - Last data access timestamp. 
struct timespec st_mtim - Last data modification timestamp. 
struct timespec st_ctim - Last file status change timestamp.

(来自Headers, <sys/stat.h>下的this OpenGroup link here),struct timespec在那里(<time.h>)定义为至少包含:

time_t  tv_sec          - Seconds. 
long    tv_nsec         - Nanoseconds. 

以前,这三次是time_t值,其分辨率为1秒。

答案 1 :(得分:1)

大多数文件系统都没有这么准确的时间戳。来自here

  

大多数文件系统,包括ext3,   包括时间戳数据   精确到一秒。 Ext4扩展了   这个数据的准确度为纳秒。   一些消息来源也表示   ext4时间戳支持日期   2514年4月25日,与1月18日相比,   2038年,对于ext3