【发布时间】:2011-07-02 11:16:50
【问题描述】:
我想编写一个 C 程序以微秒或毫秒为单位显示文件的最后修改时间。我该怎么办?你能帮我吗?
非常感谢。
【问题讨论】:
-
只是出于好奇,你为什么需要这个?
-
@Alphaneo:实际上,我想在某个目录中显示所有文件的最后修改时间。据此,我可以对我的文件进行排序。谢谢
我想编写一个 C 程序以微秒或毫秒为单位显示文件的最后修改时间。我该怎么办?你能帮我吗?
非常感谢。
【问题讨论】:
【讨论】:
JFS、XFS、ext4 和 Btrfs 支持纳秒时间戳。
Michael Kerrisk 所著的“The Linux Programming Interface”一书对文件属性有一个很好的部分
【讨论】:
使用了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);
}
您应该在构建系统中检查struct stat 中是否存在st_mtim,如果不存在则准备回退到st_mtime(类型为time_t,分辨率仅为1 秒)现在。
【讨论】:
stat()。
您可以使用 stat() 函数,它会返回包含文件最后修改时间的 struct stat。这是手册页http://linux.die.net/man/2/stat。至于精度,这取决于你的文件系统是否支持亚秒级时间戳。
【讨论】:
stat 以纳秒精度返回时间。
完成 Andrew 和 ZelluX 的回答。
限制在文件系统中。对于Linux来说ext3是常用的,可以在维基百科中看到:
Date resolution 1s
【讨论】: