读取目录文件

《朱老师物联网大讲堂》学习笔记
学习地址:www.zhulaoshi.org

读取目录文件,
       DIR *opendir(const char *name);
       struct dirent *readdir(DIR *dirp);
opendir打开一个目录后得到一个DIR类型的指针给readdir使用,
readdir函数调用一次就会返回一个struct dirent类型的指针,
这个指针指向一个结构体变量,
这个结构体变量里面记录了目录项,
readdir调用一次读出一个目录项,
读到NULL的时候,代表读取完了,

       On Linux, the dirent structure is defined as follows:

           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[256]; /* filename */
           };

可重入函数介绍,
简单说,就是多次调用之间是否有关联,

       struct dirent *readdir(DIR *dirp);
多次调用readdir其实readir内部并不会重复申请内存而是使用第一次调用readdir时分配的那个内存,这也是readdir不可重入的关键,
       int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
不可重入在多线程中不安全,所以后来,又提供了可重入版本的C库封装,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值