文件IO--fileIO


title: 文件IO–fileIO
date: 2020-10-12 10:58:48
tags:

文件IO简介

1.文件IO也称不带缓冲的I/O(unbuffered)。不带缓冲指的是每个read, write都调用内核中的一个系统调用。
2.遵循POSIX相关标准,任何兼容POSIX标准的操作系统上都支持文件I/O。
3.读写文件时, 每次操作都会执行相关系统调用, 好处是直接读写实际文件,坏处是频繁的系统调用会增加系统开销。

原子操作

–> 打开文件 + 移动到末尾
考虑一个进程,它将数据添加到一个文件尾端。早期的 unix版本并不支持open的O_APPEND选项,

if (lseek(fd, 0L, 2) < 0)
	err_sys("lseek error");
if (write(fd, buff, 100) != 100)
	err_sys("write error");

以上情况,若两个进程A和B对同一文件进行添加操作。每个进程都打开了该文件,但未使用O_APPEND标志。
每个进程都有它自己的文件表项,但是共享一个v节点表项。
1.假定进程A调用lseek,对于进程A的该文件的当前位置量设置为1500L,
2.然后内核切换进程使B进程运行。进程B执行lseek,也将该文件的当前位移量设置为1500L,
3.然后B调用write,它将B的该文件的当前位置量增至1600
4.因为文件的长度已经增加,所以内核对v节点中的当前长度更新为1600
5.然后内核又切换使

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值