文件IO

linux系统函数

Created with Raphaël 2.1.0 C库函数(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值