APUE学习笔记-文件IO
2012-06-10 22:12
204 查看
1 文件I/O
1、 lseek的返回值应该判断是否为0,而不是小于0。2、 偏移量可以大于文件大小。这个时候会有文件空洞。
3、 可以统计程序的运行时间:用户cpu(用户态),系统cpu(内核态),墙上时间(总是将)。time –p ./execute
4、 open加上标志:O_CREATE和O_EXCL可以判断文件是否存在。
5、 dup和dup2可复制文件描述符。并可指定复制后的描述符。
6、 linux ext2文件系统不支持O_SYNC标志。可以通过fsync函数来实现。
2 文件和目录
1、 文件可以截断:truncate()2、 remove可以删除文件或者目录的连接。
3、 rename可以为文件或者目录更改名称。不过有很多注意。
4、 mkdir和rmdir创建和删除目录。
5、 chdir,fchdir,getcwd:更改路径,获取路径。
6、 Unix对目录的深度有限制吗?
3 标准IO库
1、 流的定向是什么作用?fwide函数可以查看,设定流的定向。2、 缓存的三个类型:1)全缓冲,填满缓冲区才进行读写。2)行缓冲,遇到换行符,进行IO,或者行缓冲区填满,即使没有换行符,也要IO。3)不缓冲。
3、 标准出差时不缓冲的,打开至终端设备的流程是行缓冲的,其他是全缓冲的。
4、 流的缓冲可以通过函数setbuf或者setvbuf来进行设置。必须在流打开后,使用前进行设置(如果在使用后设置什么效果?失败?段错误?成功?)。
5、 setbuf如果buf为Null,则是关闭缓冲。如果与终端设备关联,某些设备也会设置为行缓冲。
函数 | mode | buf | 缓冲区及场地 | 缓冲类型 |
setbuf | 无 | 非空 | 长度为BUFSIZE的用户buf | 全缓冲或行缓冲 |
NULL | 无缓冲区 | 不带缓冲 | ||
setvbuf | _IOFBF | 非空 | 长度为size的用户buf | 全缓冲 |
NULL | 合适长度的系统缓冲区,一般是块的长度。 | |||
_IOLBF | 非空 | 长度为size的用户buf | 行缓冲 | |
NULL | 合适长度的行缓冲 | |||
_IONBF | 忽略 | 无缓冲 | 无缓冲 |
7、 打开流函数:fopen,freopen(指定流上打开),fdopen。
8、 打开方式:
限制 | r | w | a | r+ | w+ | a+ |
文件必须存在 | 是 | 是 | ||||
擦除以前内容 | 是 | 是 | ||||
流可以读 | 是 | 是 | 是 | 是 | ||
流可以写 | 是 | 是 | 是 | 是 | 是 | |
流只写在尾端 | 是 | 是 |
10、 二进制io:fread函数返回的nobj小于传入的nobj,则可能出错,或者到达尾端,需要调用ferror或者feof。
11、 fread函数的局限在于无法读网络上的文件,因为存放方式不同,而且整数浮点数存储也不相同。网络文件需要通过高级协议读写,比如smbd。
12、 定位流函数:ftell,fseek。
13、 几个格式化函数:
a) sprintf:会在结尾自动添加null,但是返回值中不包含这个字节。buf其他的部分不变。
b) snprintf:1)返回值不包括null,另外,其实返回的是格式化后字符串的大小,而不是写进去的字符串的大小。2)不会将其他的部分清空为0。这一点和strncpy不同。3)如果返回值大于等于n,则说明缓冲区溢出了,有东西被丢弃了。
14、 fileno可以获得流的描述符。
15、 比文件IO更高效的函数:fio,sfio,mmap。抽时间可以研究一下。
相关文章推荐
- apue学习笔记--第三章-- 文件IO
- [学习笔记]Java IO之文件
- 【apue学习笔记】之apue.h等头文件的配置
- 【Python学习笔记】IO编程:文件读写
- Java IO ---学习笔记(文件操作与随机访问文件)
- python3.x文件IO学习笔记
- java基础-用IO演示文件的复制过程(学习笔记)
- python学习笔记 IO 文件读写
- java_croe 学习笔记之新IO---java.nio 之内存映射文件
- apue笔记第三章文件IO
- Unix学习笔记------文件IO------使用lseek设置文件当前读写偏移量(即:当前的读写位置)
- Java IO 实现文件复制 -Java 学习笔记 (25)
- java学习笔记(九):Java 流(Stream)、文件(File)和IO
- 树莓派学习笔记——使用文件IO操作GPIO SysFs方式
- scala学习笔记之文件IO操作
- C++标准库 之 iostream库的学习笔记(四) fstream类的使用和总结文件IO
- [知了堂学习笔记]IO扩展_解析 properties文件
- linux学习笔记之文件IO
- java io文件学习笔记
- Scala学习笔记--文件IO