美文网首页
15.读取目录文件

15.读取目录文件

作者: 辉神来了 | 来源:发表于2019-10-30 15:09 被阅读0次
    opendir与readdir函数
    • opendir打开一个目录后得到一个DIR类型的指针给readdir使用
    • readdir函数调用一次就会返回一个struct dirent类型的指针,这个指针指向一个结构体变量,这个结构体变量里面记录了一个目录项(所谓目录项就是目录中的一个子文件)。
    • readdir调用一次只能读出一个目录项,要想读出目录中所有的目录项必须多次调用readdir函数。readdir函数内部户记住哪个目录项已经被读过了哪个还没读,所以多次调用后不会重复返回已经返回过的目录项。当readdir函数返回NULL时就表示目录中所有的目录项已经读完了。

    dirent结构体

    可重入函数介绍
    • 有些函数是可重入的有些是不可重入的
    • readdir函数和我们前面接触的一些函数是不同的,首先readdir函数直接返回了一个结构体变量指针,因为readdir内部申请了内存并且给我们返回了地址。多次调用readdir其实readir内部并不会重复申请内存而是使用第一次调用readdir时分配的那个内存。这个设计方法是readdir不可重入的关键。
    • readdir在多次调用时是有关联的,这个关联也标明readdir函数是不可重入的。
    • 库函数中有一些函数当年刚开始提供时都是不可重入的,后来意识到这种方式不安全,所以重新封装了C库,提供了对应的可重复版本(一般是不可重入版本函数名_r)

    相关文章

      网友评论

          本文标题:15.读取目录文件

          本文链接:https://www.haomeiwen.com/subject/vbsdyctx.html