我想写一个C程序来显示文件的最后修改时间,以微秒或毫秒为单位。我该怎么办?你能给我一个帮助吗?
非常感谢。
答案 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)
有一个stat命令,你可以直接使用
http://www.thegeekstuff.com/2009/07/unix-stat-command-how-to-identify-file-attributes/
答案 4 :(得分:0)
通过 Andrew 和 ZelluX 完成答案。
限制在文件系统中。对于Linux ext3是常用的,您可以在维基百科中看到:
Date resolution 1s