完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 michael_llh 于 2016-8-9 22:15 编辑
目录文件的操作在Linux底下也是有特殊的API来进行操作的,有两个函数opendir和readdir,与之相关的有这么多个函数,如下: open,readdir,closedir,rewinddir,seekdir,telldir,scandir 我们看一下opendir的原型: DIR *opendir(const char * name); 我们传入文件的名称,之后会返回一个DIR的指针,当我们在使用这个函数的时候我们就需要定义一个DIR的指针来存放相应的返回值,得到这个指针之后我们需要调用另外一个函数就是我们的readdir,它的原型如下: struct dirent * readdir(DIR *dir); 可以看到它的传入参数是一个DIR的指针,刚好是我们opendir返回值的类型,此时将我们的opendir的返回值传入即可。然后它返回的是一个结构体。这个结构体的定义如下: struct dirent { ino_t d_ino; ff_t d_off; signed short int d_reclen; unsigned char d_type; char d_name[256]; }; d_ino 此目录进入点的inoded_off 目录文件开头至此目录进入点的位移d_reclen 的长度,不包含NULL字符d_type 所指的文件类型d_name 文件名 这里还需要注意一点就是当我们调用这个函数的时候一次只返回一个目录下的一个文件的信息,如果我们需要遍历该文件夹下的所有文件,那么就需要多次调用这个函数,但是我们如果知道这个文件是否已经被读取过了呢?这个在Linux里面已经做了相应的处理,我们不用管它,直接多次调用readdir即可,当返回值为NULL的时候就表明文件夹下面的所有文件就已经读取完了。 一般情况下当我们创建了一个文件夹之后我们就会有两个文件随之生成,但是这个文件隐藏的,一般情况下我们看不到,一个是“.”表示的当前目录下,另外一个文件是“..”,表示上一层目录。所以我们才能够使用cd ..这个命令返回上一层目录,这就是原因。 补充说明一下可重入函数和不可重入函数,从字面意思上看我们就知道这两者的区别,可重入就是函数可以重新进入,那么什么时候叫做可以重新进入呢,就是当我们这个函数执行到一半的时候被打断了,去执行其他的东西了,然后其他东西执行完了再返回到这个函数继续执行,这个就是我们说的重新进入,那么可重新进入的意思就是说,当我们返回回来继续执行这个函数的时候他能够保持原来的样子,像没被打断之前那样执行的话就代表这个函数是属于可重入的函数,反之就是不可重入函数。 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
「含关键代码」基于AM3352/AM3354/AM3359的Linux开发案例分享
4893 浏览 0 评论
87410 浏览 0 评论
【高手问答】如何做到精通linux技术?资深工程师带你突破难点
4724 浏览 2 评论
3619 浏览 2 评论
解读Linux :先从创建一个文件夹用来存放jdk压缩文件开始
2482 浏览 0 评论
1998浏览 3评论
1285浏览 1评论
求解:aarch64交叉编译工具已经安装成功,环境变量已经配置,怎么将系统架构切换为ARM的架构
1343浏览 0评论
电脑和虚拟机可以互ping,电脑和开发板也可以互ping,但是虚拟机和开发板ping不通是什么原因
1234浏览 0评论
1173浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 22:02 , Processed in 0.986560 second(s), Total 59, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号