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

标签 c linux filesystems partition ext4

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

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

并制作一个解析器。

谢谢

最佳答案

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

没有标准且与文件系统无关的方法来获取给定 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。

您还可以在 ext2/3/4 disk partition 级别、未安装文件 ext[234] 系统上工作,使用类似的库(或来自的程序) e2fsprogs。如果安装了某个文件系统,则不应访问(即使只是读取)包含该文件系统的磁盘分区。

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

关于c - 在 C 中获取文件系统创建日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47979775/

相关文章:

c - GDB:重新运行程序直到出现故障,一路上回答提示

powershell - 尝试遍历文件夹并对每个文件执行递归操作

c++ - 如何判断文件夹是否是递归文件夹复制的子文件夹?

c - 如何获得零的 VSX 值?

c - 尝试使用 pthreads,出现 munmap 错误?

自定义字符串长度函数逻辑错误

linux - 在 google-chrome 中打开标准流

python - 为什么在 Windows 上使用 python 套接字进行端口扫描比在 linux 上慢得多?

linux - 写入 TCP 套接字不断返回 EAGAIN

c++ - 独立 exe : Where on disk to save config files and logs?