目录
文件基础
系统调用接口
open
close
write
实现文件写入
实现文件内容追加
read
实现文件读取
文件描述符fd
文件基础
1.空文件,也要在磁盘占用空间。
2.文件=内容+属性
3.文件操作:是单独对于内容或属性、或者内容和属性
4.文件路径+文件名,标明了文件的唯一性
5.如果没有指明对应的文件路径,默认是在当前路径(当前进程所在路径)进行访问
6.对文件的操作本质是进程对文件的操作
7.一个文件要被访问,首先要被打开(用户进程用来调相应接口,操作系统帮我们把文件打开
系统调用接口
open
pathname 文件名
flags O_RDONLY(只读), O_WRONLY(只写) O_RDWR(读写),O_CREAT(不存在就创建)这些是标记位的宏,用不同的比特位来标记不同的含义。
mode 权限,处理文件不存在的情况时,传入文件的处理权限。
使用
注意:这里运行的myfile算是shell的子进程,umask(0)改变的是这里myfile进程的umask,与shell中的umask无关。
close
使用
write
fd 文件描述符
buf 对应的缓冲区数据存储在buf中
count 要写入的字节个数
实现文件写入
注意:C语言以'\0'作为字符串的结尾,这是c语言的规定与文件无关。文件不以'\0'位结尾,只要字符串里的有效内容,所以这里的strlen(Buffer)不用+1,除非要在文件内写入'\0'
实现文件内容追加
read
从文件描述符读取内容到*buf中,读取长度为count
ssize_t 是系统定制的一种类型,是有符号整数。
如果read调用成功,会返回自己读到了多少字节,如果返回0,表示读到了文件结尾。ssize_t的值大于0就表示读取成功。
实现文件读取
文件描述符fd
在进程打开文件时,一定会打开多种多样的文件,有n多个进程OS中一定有大量的被打开的文件,OS管理这些被打开的文件文件,每一个文件都有一个struct file{}对象
进程与文件,是要通过内核当中的文件描述符表,通过数组的方式,将进程和文件关联起来,所以得到的文件描述符都是连续的小整数就是数组下标。
C语言运行时会默认打开三个输入输出流
stdin 键盘 stdout 显示器 stderr 显示器,文件描述符0 1 2默认被这三个文件占用。
文件描述符的本质就是,数组的下标。
最后
加油
猜你喜欢
- 16天前(瑞士大酒店-自助餐怎么样)瑞意心旅,以食为先 瑞士酒店开启全新"瑞士早餐计划"
- 16天前(屿见不一样是哪个酒店)屿见白纱,遇见自己 “佳能PhotoGirls屿见白纱”摄影派对玩转海岛
- 16天前(河南省文旅大会精神)2025河南省文化旅游发展大会新闻发布会在郑州召开
- 16天前(重庆恐龙化石遗址)重庆黔江恐龙化石抢救性发掘新闻发布会举行
- 16天前(中国最好的避暑山庄)2025中国十大避暑山庄评选揭晓,澳涞山庄夺魁
- 16天前(澳涞坞是什么)从本土品牌到全球舞台:澳涞山庄获国际顶级产业资源加持
- 16天前(上海迪士尼 夏天)酷爽夏日,奇妙相伴!来上海迪士尼度假区清凉入夏
- 16天前(内蒙古冬季旅游攻略)内蒙古冬日奇遇:携程租车带你策马踏雪
- 16天前(锦江 iu)锦江荟APP原生鸿蒙版正式上线打造全场景旅行服务新体验
- 16天前(阿斯塔纳航空属于哪个联盟)阿斯塔纳航空荣获Skytrax世界航空公司大奖,将继续助力中哈交流往来
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章