linux目录和文件系统调用汇总

1 函数stat,fstat,lstat,fstatat

#include<sys/stat.h>

int stat(const char* restrict pathname,struct stat *restrict buf);//1.pathname 文件路径 2.buf  一个文件类型的结构体指针

int fstat(int fd,struct stat *buf);//1.fd 已经打开的文件描述符 2.buf 与上述相同

int lstat(const char*restrict pathname,struct stat *restrict buf);//与 stat函数参数相同

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

1.stat函数 文件的类型赋值给buf

2.fstat与stat相同,但第一个参数不同,fstat的第一个参数为文件描述符

3.lstat与stat函数相同,但lstat如果遇到的文件的符号连接,他指向的是文件本身,而不是符号连接指向的文件

4.fstatat函数为一个相对于当前打开目录(由fd指出)的路径名返回文件统计信息。flag参数控制着是否跟随一个符号链接。当flag参数为AT_SYMLINK_NOFOLLOW标志被设置时,不会跟随符号链接,而是返回符号链接本身的信息。否则,返回的是符号链接指向的实际文件的信息。如果参数fd的值是AT_FDCWD, 并且pathname是一个相对路径名。则fstatat会计算相对于当前目录的pathname参数。如过pathname是个绝对路径,fd的参数就会被忽略.

下面是结构体 stat的定义

struct stat
{
mode_t           st_mode;//文件类型
into_t           st_ino;
dev_t            st_dev;
dev_t            st_rdev;
nlink_t          st_nlink;//硬链接计数
uid_t            st_uid;//文件所有者
gid_t            st_gid;//文件组所有者
off_t            st_size;
struct timespec  st_atime;//文件数据最后的访问时间
struct timespec  st_mtime;//文件数据最后的修改时间
struct timspec   st_ctime;//i节点状态最后更改的时间
blksize_t        st_blksize;//对文件IO 较合适的块长度
blkcnt_t         st_blocks;//所分配的实际512字节块的块数 有的可能不是512字节,此值不使用移植
};

2.文件类型

文件类型信息包含在stat结构体的st_mode成员中.可以用下图中的宏确定文件类型,这些宏的参数都是stat结构体中的st_mode成员.

文件类型
S_ISREG() 普通文件
S_ISDIR() 目录文件
S_ISCHR() 字符特殊文件
S_ISBLK() 块特殊文件
S_ISFIFO() 管道或FIFO
S_ISLNK() 符号链接
S_ISSOCK() 套接字

下面的宏参数指向的是stat结构体

对象的类型
S_TYPEISMQ() 消息队列
S_TYPEISSEM() 信号量
S_TYPEISSHM() 共享存储对象

3. 文件访问权限

文件访问权限值包含在了st_mode 这个里面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值