一步一步学UC(三) - 文件和目录

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函数可以更改当前工作目录



一步一步学UC(三) - 文件和目录

上一篇:教你如何反编译app,拿到加密方式


下一篇:netcore2.0 ORM框架中如何配置自定义的主外键加载