一、IO与文件映射
1、IO的共享与效率
read与write其中数据缓冲的大小
读取数据的缓冲:getpagesize
2、定位与定位读取(随机读取)
read与write在操作的时候,自动移动读取位置。
lseek读取定位,改变读取位置。
pread/pwrite在指定位置读写。
lseek函数说明:返回当前读取位置在文件中的绝对位置
off_set lseek(int fd,//定位文件描述符号
off_t off,// 定位位置
int whence/ 文件开始位置/文件结束位置/文件当前位置 SEEK_SET/SEEK_END/SEEK_CUR)
lseek的作用:定位文件的位置。lseek移动位置只要合法,都是有效的。
lseek+write = pwrite lseek+read = pread
读取一个特殊的文件:
/proc/${pid}/mem文件程序中的虚拟映射文件
文件的其他操作
fstat获取文件状态
ftruncate改变文件大小
文件映射:
虚拟地址映射到内存;
虚拟地址可以映射到文件:可以用内存的方式访问文件。
mmap/munmap
1、使用内存方式写入数据
2、使用内存方式读取数据
二、文件描述符号的操作(IO锁)
文件描述符号是整数,文件描述符号对应内核的上下文环境
dup 返回系统指定的整数 dup2拷贝文件描述符号,返回用户指定的整数
fcntl对文件描述属性的修改
拷贝文件描述符号
修改判定文件的遗传方式(描述标记)
修改判定文件的状态标记
设置强制锁,重新编译内核
设置建议锁,(默认方式)
设置信号