当前位置: 首页 > news >正文

Unix高级编程之文件IO

文件io---低级io

特点:
不带缓存io
优点:
实时性高

1.io基本操作
文件描述符:文件io打开文件的标识
非负整型数,是内核为打开文件维护结构的数组下标
默认最多能打开1024文件

stdin-----0
stdout-----1
stderr-----2
函数:
open(2);
read(2);
write(2);
lseek(2);
<1>允许偏移的字节个数大于文件本身
<2>lseek()本身不进行读写操作
空洞文件
空洞文件本身不占用磁盘空间

close(2);

写一段代码,验证一个进程最多能打开多少个文件?
1021

2.文件的共享
dup(2);
dup2(2);

3.i/o效率
不带缓存,用户所指定的缓存区的大小就会影响io效率
并不是缓存区越大效率越高
推荐4096

4.原子操作
操作不能被分割(打断)
tmpfile();---->原子
tmpname()+creat();---->不原子

dup2();---->原子
close()+dup()---->不原子

5.刷新内核缓存
sync(2);//刷新缓存区到内核io队列,不阻塞
fsync(2);//阻塞,直到文件的数据和inode信息全部刷新在磁盘空间才会返回
fdatasync(2);//阻塞,只是文件的数据刷新在磁盘空间才会返回

6.fcntl(2);
<1>复制文件描述符
<2>改变文件描述符标识
<3>改变文件状态标识
<4>文件锁
<5>记录锁
ioctl();

 

转载于:https://www.cnblogs.com/axjlxy/p/5859932.html

相关文章:

  • java集合框架学习—ArrayList的实现原理
  • 不等式证明
  • java集合框架学习—HashMap的实现原理
  • PHP 错误 系列:编码格式错误解决
  • java集合框架学习—HashSet的实现原理
  • 【腾讯优测干货分享】Android内存泄漏的简单检查与分析方法
  • java集合框架学习—LinkedHashMap的实现原理
  • C#基础-MD5验证
  • java中Hashtable与HashMap的区别
  • html5使用FileReader上传图片
  • java中hashcode()和equals()的详解
  • ADO.NET完整增删改
  • Java精华积累:初学者都应该搞懂的问题
  • EasyUI——常见用法总结
  • 简单介绍Java语言中内存管理的几个技巧
  • Apache的基本使用
  • CSS居中完全指南——构建CSS居中决策树
  • EOS是什么
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JS函数式编程 数组部分风格 ES6版
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • leetcode386. Lexicographical Numbers
  • Linux中的硬链接与软链接
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • nodejs实现webservice问题总结
  • node和express搭建代理服务器(源码)
  • node学习系列之简单文件上传
  • python docx文档转html页面
  • React-生命周期杂记
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • WePY 在小程序性能调优上做出的探究
  • 将回调地狱按在地上摩擦的Promise
  • 判断客户端类型,Android,iOS,PC
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 微信小程序:实现悬浮返回和分享按钮
  • 正则表达式
  • 中文输入法与React文本输入框的问题与解决方案
  • UI设计初学者应该如何入门?
  • 阿里云API、SDK和CLI应用实践方案
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • (3)(3.5) 遥测无线电区域条例
  • (C语言)二分查找 超详细
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (六)vue-router+UI组件库
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • ../depcomp: line 571: exec: g++: not found
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .net core 6 redis操作类
  • .net framework 4.0中如何 输出 form 的name属性。
  • .net 后台导出excel ,word
  • .Net6 Api Swagger配置
  • // an array of int
  • [ IOS ] iOS-控制器View的创建和生命周期