opendir()和readdir()函数

ゝ一世哀愁。 2022-10-13 15:51 269阅读 0赞
  1. opendir()
    头文件
      #include

  #include

函数原型
  DIR* opendir (const char * path ); (获取path子目录下的所由文件和目录的列表,如果path是个文件则返回值为NULL)

功能
  打开一个目录,在失败的时候返回一个空的指针。

  1. 错误代码:
  2. 1EACCESS 权限不足。
  3. 2EMFILE 已达到进程可同时打开的文件数上限。
  4. 3ENFILE 已达到系统可同时打开的文件数上限。
  5. 4ENOTDIR 参数name 非真正的目录。
  6. 5ENOENT 参数name 指定的目录不存在, 或是参数name 为一空字符串。
  7. 6ENOMEM 核心内存不足。

返回值(DIR)

  1. DIR 结构体的原型为:struct\_dirstream
  2. struct __dirstream
  3. {
  4. void *__fd;
  5. char *__data;
  6. int __entry_data;
  7. char *__ptr;
  8. int __entry_ptr;
  9. size_t __allocation;
  10. size_t __size;
  11. __libc_lock_define (, __lock)
  12. };
  13. typedef struct __dirstream DIR;

DIR结构体类似于FILE,是一个内部结构,以下几个函数用这个内部结构保存当前正在被读取的目录的有关信息(摘自《UNIX环境高级编程(第二版)》)。函数 DIR *opendir(const char *pathname),即打开文件目录,返回的就是指向DIR结构体的指针,而该指针由以下几个函数使用:
struct dirent *readdir(DIR *dp);
void rewinddir(DIR *dp);
int closedir(DIR *dp);
long telldir(DIR *dp);
void seekdir(DIR *dp,long loc);

2.readdir
头文件
#include

函数原型
struct dirent* readdir(DIR* dir_handle); (个人理解循环读取dir_handle,目录和文件都读)

功能
读取opendir 返回值的那个列表

返回值
返回dirent结构体指针,dirent结构体成员如下,(文件和目录都行)

  1. struct dirent
  2. {
  3.   long d_ino; /* inode number 索引节点号 */
  4.   
  5. off_t d_off; /* offset to this dirent 在目录文件中的偏移 */
  6.   
  7. unsigned short d_reclen; /* length of this d_name 文件名长 */
  8.   
  9. unsigned char d_type; /* the type of d_name 文件类型 */
  10.   
  11. char d_name [NAME_MAX+1]; /* file name (null-terminated) 文件名,最长255字符 */
  12. }

————————————————
版权声明:本文为CSDN博主「cainiao000001」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cainiao000001/article/details/80988738

发表评论

表情:
评论列表 (有 0 条评论,269人围观)

还没有评论,来说两句吧...

相关阅读