Linux文件操作原理(3)

文件操作原理简述

1.文件描述符

 1.1        对于linux内核来说,所有的打开文件都是由文件描述符(fd)来进行引用的,文件描述符是一个非负整数

当你打开一个已经存在的文件或创建一个新的文件的时候,内核就会像进程返回一个fd,当你进行其他操作都是建立在fd之上的,比如进行文件的读写操作,用open或creat函数来得到fd,将fd作为参数传递给read和write函数,才能进行操作,所以第一步必须进行文件的打开或者创建来得到fd!

2.2        在UNIX shell用宏定义了标准输入输出和标准错误,

0:标准输入

1:标准输出

2:标准错误输出

比如我想用键盘输入一个 hello,然后输出

     0代表标准输入,将输入的字符存在readbuf中,输入5个字节的长度                                               

1代表  标准输出,将readbuf里面暂存的数据输出,输出的长度为readbuf的长度。                          

                           

 3.3        文件描述符在一个进程中代表特定的含义,当我们open一个文件时,操作系统就在内存里构建了一些数据来表示这个动态文件,然后返回给应用程序一个数字作为文件描述符,完成操作以后一定要记得关闭文件,不关闭可能会损坏文件或者造成数据的丢失。

原因,第一点要明确内核运行的机制,搞清楚这个就要明白什么是动态文件,什么是静态文件

静态文件:存在于磁盘中的文件,就像我们打开电脑,桌面上显示的那些app,qq,微信等。

动态文件:我们open静态文件以后,就会在linux产生一些结构体,比如fd,buf,然后buf会复制一份静态文件中的数据进行操作,当我们close以后,操作以后的动态文件就会被写入到磁盘当中,如果没有close,就不会将操作过的数据写入到磁盘。所以

文件操作步骤一般分为:
打开/创建文件->读取文件/写入文件->关闭文件

4.4        我们不直接对块设备进行操作是因为块设备本身读写非常不灵活,是按块读写的,而内存是按字节单位操作的,而且可以随机操作,很灵活。

比如我要在hello里面把e改为0,如果按照块进行操作,就必须操作整个hello,而不能单独修改某一位,所以一般不按照块块操作。
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王不会点灯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值