我刚刚发现stat()
调用和相应的struct stat
不包含精度大于一秒的文件时间字段。要设置这些时间,有各种{f,l}utime{n,}s()
函数,但不适合获取。
然后如何以纳秒精度获得这些时间,最好使用POSIX API?
答案 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