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

时间:2017-12-26 14:12:15

标签: c linux filesystems partition ext4

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

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

并制作解析器。

由于

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

你也可以在卸载的文件ext[234]系统上的ext2 / 3/4 disk partition级别工作,使用类似库(或程序){{ 3}}。如果安装了该文件系统,则不应访问(甚至只读取)包含某个文件系统的磁盘分区。

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