4.2 函数stat、fstat、fstatat和lstat

本文详细介绍了Linux中用于获取文件信息的四个关键系统调用:stat、fstat、lstat和fstatat。这些函数返回文件的详细统计信息,包括文件类型、权限、大小等,并讨论了如何处理符号链接的情况。fstatat函数允许指定相对于给定文件描述符的路径,且其行为受flag参数影响,可选择是否跟随符号链接。

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

本章主要讨论4个stat函数以及它们的返回信息。

#include <sys/stat.h>

int stat(const char *restrict pathname, struct stat * restrict buf);

int fstat(int fd, struct stat* buf);

int lstat(const char *restrict pathname, struct stat * restrict buf);

int fstatat(int fd, const char * restrict pathname, struct stat *restrict buf, int flag);

所有4个函数的返回值:若成功,返回0;若出错,返回-1.

一旦给出pathname,stat函数将返回与此命名文件有关的信息结构。fstat函数获得已在描述符fd上打开文件的有关信息。lstat函数类似于stat,但是当命名的文件是一个符号链接时,lstat返回该符号链接的有关信息,而不是由该符号链接引用的文件的信息。

fstatat函数为一个相对于当前打开目录(由fd参数指向)的路径名返回文件统计信息。flag参数控制着是否跟随着一个符号链接。当AT_SYMLINK_NOFOLLOW标志被设置时,fstatat不会跟随符号链接,而是返回符号链接本身的信息。否则,在默认情况下,返回的是符号链接所执指向的实际文件信息。如果fd参数的值是AT_FDCWD,并且pathname参数是一个相对路径名,fstatat会计算相对于当前目录的pathname参数。如果pathname是一个绝对路径,fd参数就会被忽略。这两种情况下,根据flag的取值,fstatat的作用就跟stat或lstat一样。

第2个参数buf是一个指针,它指向一个我们必须提供的结构。函数来填充由buf指向的结构。结构的实际定义可能随具体实现有所不同,但其基本形式是:

略。

注意,stat结构中的大多数成员都是基本系统数据类型。我们将说明此结构的每个成员以了解文件属性。

使用stat函数最多的地方可能就是ls -l命令,用其可以获得有关一个文件的所有信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值