代码之家  ›  专栏  ›  技术社区  ›  Matt Joiner

如何以纳秒精度检索文件时间?[复制品]

  •  0
  • Matt Joiner  · 技术社区  · 14 年前

    我刚刚发现 stat() 呼叫,以及相应的 struct stat 不包含精度大于1秒的文件时间字段。设置这些时间,有多种 {f,l}utime{n,}s() 功能,但不用于获取。

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

    2 回复  |  直到 9 年前
        1
  •  3
  •   paxdiablo    14 年前

    这个 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.
    

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

    time_t  tv_sec          - Seconds. 
    long    tv_nsec         - Nanoseconds. 
    

    以前,这三次 time_t 具有一秒钟分辨率的值。

        2
  •  1
  •   Community Keith    9 年前

    大多数文件系统不能保存如此精确的时间戳。从 here :

    大多数文件系统,包括ext3, 包括时间戳数据 精确到一秒钟。ext4扩展了 精确到纳秒。 一些资料也表明 ext4时间戳支持日期到 2514年4月25日,而1月18日, 2038,对于Ext3