12

一些文件系统(例如 ext4 和 JFS)提供 atime/mtime 字段的纳秒级分辨率。如何读取 ns-resolution 字段?系统stat调用返回time_t第二个分辨率。

4

1 回答 1

12

第二解决时间在以下字段中:

           time_t    st_atime;   /* time of last access */
           time_t    st_mtime;   /* time of last modification */
           time_t    st_ctime;   /* time of last status change */

但是 man http://www.kernel.org/doc/man-pages/online/pages/man2/stat.2.html的“注释”部分说:

从内核 2.5.48 开始,stat 结构支持三个文件时间戳字段的纳秒分辨率。如果定义了 _BSD_SOURCE 或 _SVID_SOURCE 功能测试宏,Glibc 使用 st_atim.tv_nsec 形式的名称公开每个字段的纳秒分量。这些字段在 POSIX.1-2008 中指定,从 2.12 版开始,如果 _POSIX_C_SOURCE 定义为 200809L 或更大,或者 _XOPEN_SOURCE 定义为 700 或更大,glibc 也会公开这些字段名称。如果上述宏均未定义,则纳秒值将以 st_atimensec 形式的名称公开。

因此,nsec 部分时间在同一个“struct stat”中:( /usr/include/asm/stat.h )

 unsigned long st_atime_nsec;

 unsigned int st_mtime_nsec;

 unsigned long st_ctime_nsec;

 #define STAT_HAVE_NSEC 1
于 2011-08-26T14:22:47.980 回答