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

问题描述 投票:0回答:1

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

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

并制作一个解析器。

谢谢

c linux filesystems partition ext4
1个回答
2
投票

从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等库(或程序)。如果安装了该文件系统,则不应访问(甚至只读取)包含某些文件系统的磁盘分区。

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

© www.soinside.com 2019 - 2024. All rights reserved.