为文件获取纳秒精确的atime,mtime,ctime字段(stat?)

时间:2011-08-26 14:15:46

标签: linux filesystems linux-kernel stat

某些文件系统(例如ext4和JFS)提供纳秒分辨率的atime / mtime字段。如何读取ns分辨率字段? stat syscall返回time_t这是第二个分辨率。

1 个答案:

答案 0 :(得分:11)

第二个分辨率时间在字段中:

           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 */

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

  

从内核2.5.48开始,stat结构支持三个文件时间戳字段的纳秒分辨率。 Glibc暴露了每种纳秒组分          字段使用形式st_atim.tv_nsec的名称,如果_BSD_SOURCE或          _SVID_SOURCE功能测试宏已定义。这些字段在中指定          POSIX.1-2008,从版本2.12开始,glibc也公开了这些字段          如果_POSIX_C_SOURCE定义为值200809L或更大,或者          _XOPEN_SOURCE定义为值700或更大。如果没有          定义上述宏,然后暴露纳秒值          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