这一节主要是讲目录的操作,涉及创建目录、删除目录、读取目录等
1 mkdir 和 rmdir
用mkdir创建目录,用rmdir删除目录。
#include <sys/stat.h> int mkdir(const char *pathname,mode_t mode); 成功返回0,出错返回-1.
此函数创建一个新的空目录,. 和.. 自动创建,文件访问权限mode由进程的文件模式创建屏蔽字进行修改。(必须指定一个执行权限位)
#include <unistd.h> int rmdir(const char *pathname); 成功返回0,出错返回-1.
此函数删除一个空目录。如果函数使目录的链接计数为0,且没有进程打开此目录,则释放目录所占的空间。
2 读目录
对目录具有访问权限的任何用户都可以读目录,但是,只有内核才可以写目录。
#include <dirent.h> DIR *opendir(const char *pathname); 成功返回指针,出错返回NULL。 struct dirent *readdir(DIR *dp); 成功返回指针,出错返回NULL。 void rewinddir(DIR *dp); int closedir(DIR *dp); 成功返回0,出错返回NULL。 long telldir(DIR *dp); 返回值:与dp关联的目录中的当前位置。 void seekdir(DIR *dp,long loc);
dirent 结构在<dirent.h>中定义。
struct dirrent {
ino_t d_ino;
char d_name[NAME_MAX + 1];
};
DIR 是一个内部结构,上述六个函数用这个内部结构保存当前正在被读的目录的有关信息。
由opendir返回的指向DIR结构的指针供另外5个函数使用,opendir执行初始化操作,使第一个readdir读目录的第一个目录项。且各个目录项的顺序一般不按字母顺序排列。
时间: 2024-10-18 03:44:45