0

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

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

4

2 回答 2

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.

(来自此处的 OpenGroup 链接Headers, <sys/stat.h>),并且在此处struct timespec(在 中)定义为<time.h>至少包含:

time_t  tv_sec          - Seconds. 
long    tv_nsec         - Nanoseconds. 

以前,这三个时间是time_t一秒分辨率的值。

于 2010-08-02T08:50:56.687 回答
1

大多数文件系统没有如此准确的时间戳。从这里

大多数文件系统,包括 ext3,都包含精确到一秒的时间戳数据。Ext4 将此数据的精度扩展至纳秒。一些消息来源还表明 ext4 时间戳支持截至 2514 年 4 月 25 日的日期,而 ext3 支持的日期为 2038 年 1 月 18 日

于 2010-08-02T08:35:40.853 回答