需要对目录进行什么样的操作?
1.创建和删除目录
2.获取目录信息
3.改变目录的访问权限
4.获取、改变当前目录
5.以后有的话再补充。
注:
1.其中有一些作者不确定的,会在后面标注(?)来说明。
2.如果该博客有错误或疏漏,请留言提出来,谢谢。本作者会尽快改正。
1.创建和删除目录
头文件
#include<sys/stat.h>
#include<sys/types.h>
#include<unistd.h>
函数
int mkdir(const char *pathname, mode_t mode);
int rmdir(const char *pathname);
例子:
tips:1.创建的目录权限会受到进程的umask值(默认为0002(第一个0表示8进制))和(可能存在的)父目录的默认访问控制列表影响。
获取目录信息
环境分析:(为什么需要获取目录信息?或者说获取目录信息我们可以做什么?)
相关的结构体
d_ino inode number(此目录进入点的inode)
d_off offset to this dirent(在目录文件中的偏移)
d_reclen length of this record(记录长度)
d_type type of file(文件类型)
d_name filename(文件名)
//DIR的结构体就是上面的结构体,后面称为目录流
typedef struct __dirstream DIR;
fd 文件描述符,整形数
allocation 分配给块(DIR)的空间
size 块(DIR)的有效数据的最大长度
offset 块内的当前偏移量
data 目录块(字符串)
filepos 下一个要读取的条目的位置
头文件
#include<sys/types.h>
#include<unistd.h>
函数
//打开目录和关闭目录
DIR* opendir(const char* name); //打开一个目录文件,返回目录流
int closedir(DIR *dir); //关闭一个目录流
//获取目录信息
struct dirent *readdir(DIR *dir); //读取目录流,返回dirent结构体
off_t telldir(DIR *dir); //返回目录流当前读取位置
//修改相关信息
void rewinddir(DIR *dir); //重新定位到目录流的头部
void seekdir(DIR *dir, off_t offset); //用来设置目录流目前读取位置
//获取,改变当前目录
char* getcwd(char* buf, size_t size); //获取当前目录,相当与pwd
int chdir(const char* path); //修改当前目录,相当于cd
- chdir不支持使用~,跳转至家目录。