- stat函数:获取文件的详细属性信息
1. 文件名
2. 大小
3. 块 --> 所占用块数
4. I/O块
5. 文件类型
6. 设备
7. Inode --> 索引节点Inode中保存的是文件数据的相关信息(文件属性的描述信息)
Inode号是唯一的,表示不同文件。Linux内部访问文件是通过Inode号进行,通过Inode号的文件信息找到文件所在位置。
一个文件创建时分配其一个Inode号,二者一一映射。
8. 硬链接
9. 权限
10. Uid --> UserId
11. Gid --> GroupId
12. 最近访问时间
13. 最近更改时间
14. 最近改动时间
15. 创建时间
1. 函数原型
int stat(const char *pathname, struct stat *statbuf);
//如果读取参数为软链接,则读取软链接映射的实际文件属性
int fstat(int fd, struct stat *statbuf); //打开文件
int lstat(const char *pathname, struct stat *statbuf);
//直接读取当前文件属性,如果参数为软链接,则读取软链接的属性
2. 结构体stat
struct stat
{
dev_t st_dev; //文件的设备编号
ino_t st_ino; //节点
mode_t st_mode; //文件的类型和存取权限
nlink_t st_nlink; //硬链接数目
uid_t st_uid; //用户ID
gid_t st_gid; //组ID
dev_t st_rdev; //设备类型(若为设备,则显示设备编号)
off_t st_size; //文件字节数
blksize_t st_blksize; //块大小(文件I/O缓冲区的大小)
blkcnt_t st_blkcnt; //块数
time_t st_atime; //最后一次访问时间
time_t st_mtime; //最后一次修改时间(内容)
time_t st_ctime; //最后一次改变时间(属性)
}
- access函数:检测某文件是否具有某种权限
1. 原型
int access(const char *pathname, int mode); --> 具有某权限返回0,没有返回-1
2. mode属性
R_OK
W_OK
X_OK
F_OK
- truncate函数:用于拓展文件的大小
1. 函数原型
int truncate(const char *pathname, off_t length)
2. length参数
a. 如果length比原文件长度小,则为截断
b. 如果length比原文件长,则为拓展
- 链接函数:link, symlink, readlink, unlink
1. link函数原型
//创建一个硬链接
int link(const char *oldpath, const char *newpath);
2. symlink函数原型
//为目标创建一个软链接
int symlink(const char *target, const char *linkpath);
3. readlink函数原型
//读取一个软链接的链接对象路径
int readlink(const char *pathname, char *buf, size_t bufsize);
//buf中存储软链接指向文件的路径,bufsize是buf的大小
4. unlink函数原型
//删除一个文件的目录项并减少其硬链接数
//该函数操作文件时必须要有写权限和执行权限
//可以用于处理缓存文件
//例如,当打开某文件后,然后unlink该文件,于是在文件关闭后,unlink会删除释放文件占用的空间
int unlink(const char *pathname);