我需要知道C上磁盘(在Linux机器上)上文件系统的创建日期时间。我想避免使用shell命令,例如
tune2fs -l /dev/sdb2 | grep 'Filesystem created:'
并制作解析器。
由于
答案 0 :(得分:2)
从用C语言编写的程序(或任何能够调用C例程的语言)中,您将使用stat(2)系统调用(或者使用最近的内核和 some < / em>文件系统,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。
你也可以在卸载的文件ext[234]
系统上的ext2 / 3/4 disk partition级别工作,使用类似库(或程序){{ 3}}。如果安装了该文件系统,则不应访问(甚至只读取)包含某个文件系统的磁盘分区。
(你的问题应该给出一些动力和背景)