Linux系统编程之获取文件信息

这篇博客详细介绍了Linux系统编程中用于获取文件信息的stat()、lstat()和fstat()系统调用。它们通过文件名或文件描述符获取文件的设备ID、i节点号、权限、大小、时间戳等信息。lstat()尤其处理符号链接,fstat()针对已打开的文件。示例程序展示了如何解析stat结构体,以获取和理解文件的各种属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         利用系统调用stat()、lstat()以及fstat(),可获取与文件有关的信息,其中大部分提取自文件i节点。以上3个系统调用之间仅有的区别在于对文件的描述方式不同。

         1  stat()返回所命名文件的相关信息。

         2  lstat()与stat()类似,区别在于如果文件属于符号链接,那么所返回的信息针对的是符号链接自身(而非符号链接所指向的文件)。

         3  fstat()则返回由某个打开文件描述符所指代文件的相关信息。

         系统调用stat()和lstat()不需要对所操作的文件本身拥有任何权限,但针对指定pathname的父目录要有执行(搜索)权限。而只要为它提供有效的文件描述符,fstat()系统调用总是成功的。

         上述所有系统调用都会在缓冲区中返回一个由statbuf指向的stat结构,其格式如下:

         

设备ID和i节点号

         st_dev字段标识文件所驻留的设备。st_ino字段包含了文件的i节点号。利用这两个字段,可以在所有文件系统中唯一表示某个文件。

         如果是针对设备的i节点,那么st_rdev字段则包含设备的主、辅ID。利用宏major()和minor(),可以提取主、辅ID。在Linux系统上,要使用这两个宏,需要定义_BSD_SOURCE宏,然后include定义这两个宏的头文件<sys/types.h>。

         

         由于major()和minor()所返回的整型值大小随UINX实现的不

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值