Linux读取目录文件
1、opendir与readdir函数
(1)、opendir打开一个目录后得到一个DIR类型的的指针给readdir使用。
(2)、readdir函数调用一次后就会返回一个struct dirent类型的指针,这个指针指向一个结构体变量,这个结构体变量里面记录了一个目录项(所谓目录项就是目录中的一个子文件)。
(3)、readdir调用一次只能读出一个目录项,要想读出目录中的所有目录项必须多次调用readdir函数。readdir函数内部会记住哪个目录项已经被读过了哪个还没读,所以多次调用后不会重复返回已经返回过的目录项。当readdir函数返回NULL时就代表目录中的所有目录项已经读完了。
2、可重入函数介绍
(1)、有些函数是可重入的有些是不可重入的。可重入函数可以理解为是能被中断的函数,并且它被中断返回后也不会出现什么错误。不可重入函数可以理解为如果函数被中断的话,就会出现不可预料的错误。这是因为函数中使用了一些系统资源,比如全局变量区,中断向量表之类的。比如多个进程同时对一个文件进行写操作,如果没有同步机制的话,对文件的写入就会变得难以控制。
(2)、readdir函数和我们之前接触的一些函数是不同的,首先readdir函数直接返回了一个结构体变量指针,因为readdir内部申请了内存并且给我们返回了地址。多次调用readdir时,其实readdir内部并不会重复申请内存而是使用第一次调用readdir时分配的那个内存。这种设计方法是readdir不可重入的关键。
(3)、readdir在多次调用时是有关联的,这个关联也表明readdir函数是不可重入的。
(4)、库函数中有一些函数当年刚开始提供的时候都是不可重入的,后来意识到这种方式不安全,所以重新封装了C库,提供了对应的可重复版本(一般是不可重入版本函数名+ _r )。
Linux读取目录文件的更多相关文章
- 【Linux】目录文件权限的查看和修改【转】
转载自:http://zhaoyuqiang.blog.51cto.com/6328846/1214718 ============================================== ...
- linux 读取部分文件内容
一般我们在linux上读取文件,是用vi工具,如果是写shell 脚本时,一般式通过cat 再 使用管道来达到流的处理. 但如果文件太大,单纯的cat 可能会使用过多的内存,而且实现上还需要后续的加工 ...
- Linux】目录文件权限的查看和修改【转】
转载自:http://zhaoyuqiang.blog.51cto.com/6328846/1214718 ============================================== ...
- linux 修改目录文件权限,目录文件所属用户,用户组
1:查看命令:ll drwxr-xr-x 4 gamer ftp 4096 Mar 7 16:56 gstore drwxrwxrwx 10 root ftp 4096 De ...
- linux 遍历目录+文件(优化版本)
c++17 filesystem, regex 遍历目录 #include <stdio.h> #include <sys/types.h> #include <dire ...
- linux查看目录文件以及子目录文件大小的命令
可以使用以下命令,不过如果文件比较多,因为是递归统计大小的的,所以结果出来的会比较慢,需要等待. du -h --max-depth=1 * 以下是命令的说明 du [-abcDhHklmsSx] [ ...
- Linux:目录&文件基本操作
- 表示上一次所在目录,- 通常表示当前用户的"home"目录.使用 pwd 命令可以获取当前所在路径(绝对路径). 新建文件:touch test创建目录:mkdir -p fa ...
- linux读取yaml文件的某个属性值
trigger=$(cat test.yaml | grep "trigger" | awk '{print $2}') 该条命令的意思是:读取test.yaml文件中的trigg ...
- linux之目录文件操作
随机推荐
- Elasticsearch 使用集群 - 删除索引
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- vue 操作列的自定义
<el-table-column label="操作"> <template slot-scope="scope"> // 用到了 el ...
- 面向对象-接口(interface)实战案例
面向对象-接口(interface)实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口(interface)概述 1>.接口的语法格式 接口时抽象类的一种特殊体 ...
- 自定义css
/** * 重写FrozenUI */ /** * 按钮 */ body { background-color: #F2F2F2; } @media screen and (-webkit-min-d ...
- bugku-杂项 convert
打开题目文件,一大堆01码,用py转换成hex f=open("in.txt","r") print hex(int(str(f.read()),2)) f.c ...
- Sqlserver 增删改查----增
注意我说的常见查询,可不是简单到一个表得增删改查,做过实际开发得人都知道,在实际开发中,真正牵扯到一个表得增删改查只能说占很小得一部分,大多都是好几个表的关联操作的. 下面我就说一下我在实际开发中经常 ...
- CF1217A Creating a Character
You play your favourite game yet another time. You chose the character you didn't play before. It ha ...
- 四、Antd组件扩展
注意:先安装扩展,在安装antd框架,否则会提示 一.安装扩展 1.组件 dva 查看项目依赖 原因是我全局安装,依赖为空, npm i dva 查看依赖 cli装global 当访问报错: Warn ...
- Codeforces 1296D - Fight with Monsters
题目大意: n 只怪兽,每只的血量为 h[i] ,你的攻击力为 a ,你的对手攻击力为 b 打每只怪兽时,都是你先出手,然后你的对手出手,这样轮流攻击 如果是你给予了怪兽最后一击,你就能得到一分 你还 ...
- python类(3)感悟
1.关于类属性attribute和实例(对象)特性property思考 为什么特性会出现,类属性不能完全替代它吗? 属性: python在为属性赋值时,只会搜索对象本身的__dict__,如果找不到对 ...