文件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) |
常用函数
函数 | 说明 | 备注 |
---|---|---|
open | open/openat | create |
read | 返回读到的字节数。文件末尾返回0 | 终端读取,阻塞;磁盘读取,非阻塞。 |
write | 返回指定的写入参数,否则出错 | |
lseek | 为打开文件设置偏移量 | 扩展文件大小。获取文件大小 |
close | 释放进程加在文件的记录锁 | |
fcntl | 改变打开的文件属性 | |
ioctl | 杂项函数。对于不同的硬件文件类型,设置专有属性。比如设置串口波特率 |
文件共享
原子操作
多步组成的一个操作。操作原子地执行,要么执行完所有的步骤,要么一步也不执行。pread = lseek + read
pwrite = lseek + write
相关文章推荐
- 工作总结1.怎样高效跟客户确定需求?
- 利用百度云免费备份SQL数据库
- 手动操作导航控制器的子视图控制器的数组
- 手动操作导航控制器的子视图控制器的数组
- 将1234567890转换成1,234,567,890每3位用逗号隔开的形式(百度)
- 第10课:底实战详解使用Java开发Spark程序学习笔记(二)
- 《基于MFC的OpenGL编程》Part 5 Keyboard and Mouse Control
- 01_XML基础
- 手动操作导航控制器的子视图控制器的数组
- UML要点总结(一)
- Android SharedPreferences的简单封装
- 【bzoj3238】[Ahoi2013]差异 后缀数组+单调栈
- 【leetcode】Array——Remove Duplicates from Sorted Array(26)
- 【latex】如何解决投稿时页数不够的问题
- 【转】构建maven web项目
- 手机移动端WEB资源整合
- linux下简单编译与静态库编译使用
- LeetCode题解:Palindrome Number
- EasyPM 功能发布:「看板定义」上线
- 通俗讲解:缓存、缓存算法和缓存框架