Linux文件---文件IO概述

Linux文件I/O概述

  • 1、POSIX规范

POSIX(Portable Operating System Interface,可移植操作系统接口规范)标准最初由IEEE(Institute of Electrical and Electronics Engineers,电气和电子工程师协会,是目前最大的全球性非营利性专业技术学会)制定,目的是提高UNIX环境下程序的可移植性。通俗来讲,为一个兼容POSIX标准的操作系统编写的应用程序,可以在任何其他兼容POSIX标准的操作系统上编译执行而无需修改代码。常见的Linux与UNIX系统都支持POSIX标准。

  • 2、虚拟文件系统VFS

Linux系统的一个成功的关键因素是它具有与其他操作系统共存的能力。Linux的文件系统由两层结构搭建:上面的虚拟文件系统VFS(Virtual File System),和下面的各种不同的具体文件系统(例如Ext、FAT32、NFS等)
虚拟文件系统
VFS将各种具体的文件系统的公共部分抽取出来形成一个抽象层,位于用户的程序与具体需要使用的系统中间,并提供系统调用接口。这样我们只需针对VFS提供的系统调用进行文件操作而无需具体考虑底层细节。VFS屏蔽了用户对底层细节的描述使得编程简化。
可以使用指令
cat /proc/filesystems
查看当前操作系统支持哪些具体文件系统。

  • 3、文件与文件描述符

Linux操作系统是基于文件概念搭建起来的操作系统(“万物皆文件”),基于这一点,所有的I/O设备都可以直接当做文件来处理。因此操作普通文件的操作函数与操作设备文件的操作函数是相同的,这样大大简化了系统对不同设备、不同文件的处理,提高了效率。
那么对于内核而言,内核是如何区分不同的文件呢?内核使用文件描述符来索引打开的文件。文件描述符是一个非负整数,每当打开一个存在的文件或创建一个新文件的时候,内核会向进程返回一个文件描述符,当对文件进行相应操作的时候,使用文件描述符作为参数传递给相应的函数。
通常一个进程启动时,都会打开三个流:标准输入、标准输出、标准错误输出,这三个流的文件描述符分别是0、1、2,对应的宏定义是STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO。可以查看头文件unistd.h查看相关定义。
流的名称 文件描述符 宏定义
标准输入 0 STDIN_FILENO
标准输出 1 STDOUT_FILENO
标准错误输出 2 STDERR_FILENO
基于文件描述符的I/O操作虽然不能直接移植到诸如Windows系统等之外的操作系统上,但对于某些底层的I/O操作(例如驱动程序、网络连接等)是唯一的操作途径。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值