读目录(UNIX环境高级编程笔记)

  对某个目录具有访问权限的任一用户都可以读该目录,但是,为了防止文件系统发生混乱,只允许内核写目录。

#include
DIR *opendir(const char *pathname);
DIR *fdopendir(int fd);
                两个函数返回值:若成功,返回指针;若出错,返回NULL
struct dirent *readdir(DIR *dp);
               返回值:若成功,返回指针;若在目录尾或出错,返回NULL
void rewinddir(DIR *dp)
int closedir(DIR *dp)
                       返回值:若成功,返回0;若出错,返回-1
long telldir(DIR *dp)
                        返回值:与dp关联的目录中的当前位置
void seekdir(DIR *dp, long loc);

struct dirent {
  ino_t d_ino; /* inode number /
  off_t d_off; /
not an offset; see NOTES /
  unsigned short d_reclen; /
length of this record /
  unsigned char d_type; /
type of file; not supported by all filesystem types /
  char d_name[]; /
filename */
};

  注意:d_name项的大小并没有指定,但必须保证他它能至少包含NAME_MAX个字节(不包含终止null字节)。文件名是以null字节结束的。
  DIR结构是一个内部结构,上述7个函数用这个内部结构保存当前正在被读取的目录的有关信息。
  由opendir和fdopendir返回的指向DIR结构的指针由另外5个函数使用。
  fdopendir的返回值需要考虑到文件描述符相关的文件偏移量。

你可能感兴趣的:(UNIX环境高级编程,linux)