您的位置:首页 > 其它

文件IO

2016-02-28 10:16 190 查看

linux系统函数

Created with Raphaël 2.1.0C库函数(fopen, fread, print)linux应用层API(write..)linux内核层API(sys_write..)驱动层(uar_read)

C库函数提供缓冲,应用层API无缓冲

阻塞/非阻塞

阻塞: 例如程序等待用户输入。未输入时,睡眠。

非阻塞:轮询(Poll) –>服务器

文件类型结构体 FILE*

FILE* 结构体说明
flag状态
f_pos当前写入指针位置
buffer缓冲区(8192B)
内核为每个进程创建PCB(进程控制块),对应为结构体struct_task。struct_task包含struct_file,记录程序打开的文件。

常用函数

函数说明备注
openopen/openatcreate
read返回读到的字节数。文件末尾返回0终端读取,阻塞;磁盘读取,非阻塞。
write返回指定的写入参数,否则出错
lseek为打开文件设置偏移量扩展文件大小。获取文件大小
close释放进程加在文件的记录锁
fcntl改变打开的文件属性
ioctl杂项函数。对于不同的硬件文件类型,设置专有属性。比如设置串口波特率

文件共享



原子操作

多步组成的一个操作。操作原子地执行,要么执行完所有的步骤,要么一步也不执行。

pread = lseek + read

pwrite = lseek + write
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: