在C中获取文件系统创建日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C中获取文件系统创建日期相关的知识,希望对你有一定的参考价值。

我需要知道使用C的磁盘(在Linux机器上)上的文件系统的创建日期时间。我想避免使用shell命令,例如

tune2fs -l /dev/sdb2 | grep 'Filesystem created:' 

并制作一个解析器。

谢谢

答案

从C编码的程序(或任何能够调用C例程的语言)中,您将使用stat(2)系统调用(或者,使用最近的内核和一些文件系统,statx(2))来查询给定文件的创建时间(或目录)。当然,像ls(1)stat(1)这样的命令在内部使用stat(2)系统calll。

没有标准的,文件系统中立的方式来获得给定file system的创建时间。并不总是保留这些信息。我猜FAT文件系统,或distributed file systems,如NFS,不保留。

您可以在该文件系统的挂载点上使用stat(2)

statfs(2)系统调用检索一些文件系统信息,但不提供任何时间戳

对于ext4文件系统,请参阅ext4(5)并使用proc(5)。你可以解析/proc/mounts和一些/proc/fs/ext4/*/目录。 /proc/中的伪文件可以是parsed quickly,通常不涉及物理磁盘IO。

您也可以在未安装的文件disk partition系统上使用ext2 / 3/4 ext[234]级别,使用e2fsprogs等库(或程序)。如果安装了该文件系统,则不应访问(甚至只读取)包含某些文件系统的磁盘分区。

(你的问题应该给出一些动力和背景)

以上是关于在C中获取文件系统创建日期的主要内容,如果未能解决你的问题,请参考以下文章

从底部工作表对话框片段中获取价值

c ++我在Windows操作系统上获取文件创建日期的方法使我的控制台应用程序崩溃

如何在Objective c中获取目录中文件的创建日期

如何使用命令提示符复制在两个日期之间创建的所有文件?

在c语言中如何获取当前日期?

如何在 Bash/Debian 中获取文件创建日期/时间?