stat fstat和lstat函数
#include <sys/stat.h>
int stat(const char* restrict pathname,struct stat *restrict buf);
stat函数返回路径上此文件有关的信息结构
int fstat(int filedes,struct stat* buf);
在描述符上打开文件的有关信息
int lstat(const char*restrict pathname,struct stat* restrict buf);
和stat相似,返回链接的 信息
文件信息结构
struct stat{
mode_t st_mode;文件类型
ino_t st_ino; i节点号
dev_t st_dev; 设备号
dev_t st_rdev; 特殊文件设备号
nlink_t st_nlink; 链接数
uid_t st_uid; 用户ID
gid_t st_gid; 组ID
off_t st_size; 文件大小
time_t st_atime; 最后访问时间
time_t st_mtime; 最后修改时间
time_t st_ctime 最后状态改变时间
blksize_t st_blksize;IO块大小
blkcnt_t st_blocks; 磁盘块数
}
文件类型
文件类型信息包含在stat结构的st_mode成员中。
普通文件 S_ISREG
目录文件 S_ISDIR
块特殊文件 S_ISBLK
字符特殊文件 S_ISCHR
FIFO S_ISFIFO
套接字 S_ISSOCK
符号链接 S_ISLNK
设置用户ID和设置组ID
与进程相关的ID有6个或更多
实际用户ID和实际组ID标示我们究竟是谁
有效用户ID和有效组ID决定我们的访问权限
设置用户ID和设置组ID在执行一个程序时包含有效用户ID和组ID的副本
access函数
按实际用户ID和实际组ID进行访问权限测试
#include <unistd.h>
int access(const char *pathname,int mode);
mode:R_OK W_OK X_OK F_OK
umask函数
为进程设置文件模式创建屏蔽字,并返回以前的值
chmod和fchmod函数
改变现有文件的访问权限
chown fchown和 lchown函数
改变文件的用户ID和组ID
link unlink remove rename函数
创建、删除一个现有的目录项
symlink和readlink函数
创建一个符号链接
utime函数
更改文件的访问和修改时间
mkdir和rmdir函数
创建目录和删除目录
读目录
DIR* opendir(const char* pahtname);
struct dirent* readdir(DIR *dp);
struct diren{
ino_t d_ino;
char d_name[NAME_MAX+1];
}
chdir和fchdir函数可以更改当前工作目录