首页 > 代码库 > unix环境高级编程笔记(6)—— 文件和目录(3)

unix环境高级编程笔记(6)—— 文件和目录(3)

这一节主要是讲目录的操作,涉及创建目录、删除目录、读取目录等

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读目录的第一个目录项。且各个目录项的顺序一般不按字母顺序排列。

 

unix环境高级编程笔记(6)—— 文件和目录(3)