在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中获取文件系统创建日期的主要内容,如果未能解决你的问题,请参考以下文章