文件元数据

文件元数据是文件系统中除文件内容以外的信息,保存在索引节点(inode)中。通过 statfstat 系统调用可以获取这些信息。

stat 与 fstat

  • int stat(const char *restrict path, struct stat *restrict buf):通过文件路径获取元数据。
  • int fstat(int fd, struct stat *buf):通过已打开的文件描述符获取元数据。

struct stat 的关键字段

  • st_mode:文件类型和访问权限的编码。使用宏 S_ISREG(m)(普通文件)、S_ISDIR(m)(目录)、S_ISSOCK(m)(套接字)等来判断文件类型。权限位包括读(r)、写(w)、执行(x),分为属主、属组、其他三类。
  • st_size:文件大小(字节)。对于普通文件是文件的数据大小,对于目录是目录文件的大小。
  • st_mtime:最后修改时间。以从纪元(1970-01-01)开始的秒数表示。
  • st_uid / st_gid:文件属主的用户ID和组ID。
  • st_nlink:硬链接数。

这些元数据是文件系统管理的基础,ls -l 命令输出的信息就来自 stat

链接到