文件的读写
write函数
把buf中的count字节数据写入fd文件中
read函数
从fd文件中读出count字节数据存入buf中
进程结束时,操作系统会自动将打开的文件关闭,不关也可以,关闭最保险
若不知道ssize_t的类型
gcc -E read.c -o read.i预处理,将宏定义的常量完成替换
vi read.i 后直接输入/size_t,回车,所寻找的内容就会高亮,按n定位下一个
文件的随机读写与顺序读写
读写位置在哪,就从哪里开始读或写
读写位置随着读写操作同步变化
lseek函数 人为调整文件读写位置
基准+偏移量,返回值为目标位置(文件读写位置,以文件头为基准的偏移量)
linux!将world!覆盖
文件空洞写入的\0为特殊字符,不同的工具显示不同的形式
txt文件显示的都为字符,0对应的字符为'\0',65对应的字符为'A'
主要运用在下载,下载中的文件会有文件空洞,先占大小,随着下载填充内容
系统IO与标准IO
标准库->系统调用
fopen -> open
fwrite -> write
fread -> read
fclose -> close
相同的内容重复一定次数,用标准库的快
调用write函数时切换到内核态,100000次切换到内核态
fwrite建立缓冲区,往缓冲区写完以后调用1次write切换到内核态一次性完成
如果只写一次,就是write快
文件描述符表项的复制
文件描述符表中文件描述符fd1=3,fd2=4对应的项为相同的文件表项指针,指向相同的文件表项
dup2(fd1,1)表示将文件描述符fd1=3对应的文件表项指针复制到文件描述符1对应的项中,从而3和1有相同的文件表项指针,指向同一个文件表项
printf往1里输出,所以关闭输出缓冲区后,输出到文件中,而不是屏幕上
不关闭输出缓冲区,屏幕和文件中都没有输出