如何在linux上显示文件的最后修改时间

时间:2011-02-23 02:44:22

标签: c linux file time

我想写一个C程序来显示文件的最后修改时间,以微秒或毫秒为单位。我该怎么办?你能给我一个帮助吗?

非常感谢。

5 个答案:

答案 0 :(得分:11)

使用stat()功能。在glibc的最新版本中,st_mtim(注意:没有尾随e)是一个类型为struct timespec的字段,用于保存文件修改时间:

struct stat st;

if (stat(filename, &st)) {
    perror(filename);
} else {
    printf("%s: mtime = %lld.%.9ld\n", filename, (long long)st.st_mtim.tv_sec, st.st_mtim.tv_nsec);
}

您应该检查构建系统中st_mtim中是否存在struct stat,并准备回退到st_mtime(类型为time_t),且仅1秒分辨率)如果不存在。

答案 1 :(得分:4)

您可以使用stat()函数,它将返回包含文件最后修改时间的struct stat。这是手册页http://linux.die.net/man/2/stat。至于精度,它取决于您的文件系统是否支持亚秒级时间戳。

答案 2 :(得分:1)

JFS,XFS,ext4和Btrfs支持纳秒时间戳。

Michael Kerrisk撰写的“Linux编程接口”一书有一篇关于文件属性的好文章

答案 3 :(得分:1)

答案 4 :(得分:0)

通过 Andrew ZelluX 完成答案。
限制在文件系统中。对于Linux ext3是常用的,您可以在维基百科中看到:

Date resolution   1s