目录
前言
在之前的章节中有详细讲解目录和文件操作,本章节扩展一些目录和文件操作的更多知识
一、access库函数
access 函数用于判断当前操作系统用户对文件或目录的存取权限
使用函数需要包含头文件:
#include <unistd.h>
函数声明:
int access(const char *pathname, int mode);
参数说明:
- pathname 文件名或目录名,可以是当前目录的文件或目录,也可以列出全路径
- mode 需要判断的存取权限
在头文件unistd.h中的预定义如下:
#define R_OK 4 // R_OK 只判断是否有读权限
#define W_OK 2 // W_OK 只判断是否有写权限
#define X_OK 1 // X_OK 判断是否有执行权限
#define F_OK 0 // F_OK 只判断是否存在
返回值:
- 当 pathname 满足 mode 的条件时候返回0,不满足返回-1
- access 函数主要用于判断文件或目录是否是存在
二、stat库函数
stat结构体
struct stat 结构体用于存放文件和目录的状态信息
struct stat
{
dev_t st_dev; // device 文件的设备编号
ino_t st_ino; // inode 文件的i-node
mode_t st_mode; // protection 文件的类型和存取的权限
nlink_t st_nlink; // number of hard links 连到该文件的硬连接数目, 刚建立的文件值为1.
uid_t st_uid; // user ID of owner 文件所有者的用户识别码
gid_t st_gid; // group ID of owner 文件所有者的组识别码
dev_t st_rdev; // device type 若此文件为设备文件, 则为其设备编号
off_t st_size; // total size, in bytes 文件大小, 以字节计算
unsigned long st_blksize; // blocksize for filesystem I/O 文件系统的I/O 缓冲区大小.
unsigned long st_blocks; // number of blocks allocated 占用文件区块的个数, 每一区块大小为512 个字节.
time_t st_atime; // time of lastaccess 文件最近一次被存取或被执行的时间, 一般只有在用mknod、 utime、read、write 与tructate 时改变.
time_t st_mtime; // time of last modification 文件最后一次被修改的时间, 一般只有在用mknod、 utime 和write 时才会改变
time_t st_ctime; // time of last change i-node 最近一次被更改的时间, 此参数会在文件所有者、组、 权限被更改时更新
};