【Linux】Linux随记2

Linux将所有硬件设备抽象为文件,通过虚拟文件系统提供统一接口。文章介绍了ext4、fat32等普通文件系统及procfs、devfs等特殊文件系统。还涉及文件描述符、打开模式,以及系统IO和标准IO编程,包括fopen、fwrite等函数,并讨论了文件IO的不同模式如阻塞与非阻塞。
摘要由CSDN通过智能技术生成

一切皆文件

Linux内核

屏蔽硬件区别,把所有硬件设备抽象成文件,提供统一的接口给用户使用。

虚拟文件系统

抽象层:对文件的访问实际上是对抽象层的访问
抽象对象:封装了底层读写细节,使用c语言的多态来实现具体文件系统接口

虚拟文件系统层次结构

在这里插入图片描述

普通文件系统

1.ext4
2.fat32
3.ubifs

特殊文件系统

1.进程文件系统:procfs,挂载在/proc,存放进程相关信息,任务管理器。
2.设备文件系统:devfs,挂载在/dev,存放硬件操作接口

文件描述符和打开模式

系统IO编程

直接使用linux开放出来的系统IO接口

  • open
  • write
  • read
  • lseek //读写指针偏移,写入和读出都是用同一个指针,所以在写入n个数据后,读写指针会偏移n,要全部读出数据,就要把读写指针重新偏移至文件起始位置。
  • sync //把数据从也缓冲区写入磁盘
  • close
文件描述符

特殊的文件索引

进程

每个程序本质上就是一个进程
实际上就是进程中的file_struct结构体成员fa_array的数组下标

文件打开模式

主模式 //只能使用一个,互斥

  • O_RDONLY:只读模式
  • O_WRONLY:只写模式
  • O_RDWR:读写模式
    副模式//可多个一起用
  • O_CREAT:当文件不存在,需要去创建文件
  • O_APPEND:追加模式
  • O_DIRECT:直接IO模式
  • O_SYNC:同步模式
  • O_NOBLOCK:非阻塞模式
标椎IO编程

使用glibc库的库函数,c标椎库实现了一个io缓存区

常见标椎IO函数
  • fopen
  • fwrite
  • fclose
  • fseek
  • fflush
文件IO的五大模式
  • 阻塞模式
  • 非阻塞模式
  • IO多路复用
  • 异步IO
  • 信号驱动IO
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值