Linux操作系统-文件(1)

来源:互联网 发布:在网络上怎么赚钱 编辑:程序博客网 时间:2024/04/29 05:52

Linux操作系统—文件(1)(2015-7-21)

分类:Linux操作系统

总述:

  在LINUX中,几乎任何事物都可以用一个文件来表示。Linux中的文件类型多样,既包含普通的磁盘文件,也包含特殊的硬件设备文件,管道(PIPE)文件,套接字(socket)文件和目录文件等。在C语言的编程环境中,与文件有关的操作主要是I/O(输入输出)操作。Linux环境下的I/O操作分为两类:
- 基于文件描述符的底层系统调用I/O
- 基于流的C语言标准库函数调用I/O

基于文件描述符的底层系统调用I/O

一:Linux文件I/O概述

  Linux中,文件系统被组织成一树的形状,树枝是目录,树叶是文件。其中的目录也是一类特殊的文件。另外,Linux中用于进程间通信的管道和用于网络通信的socket,也都以文件接口的方式提供服务。因此,文件操作编程是其它应用编程的基础之一。
  文件为操作系统服务和设备提供了一个简单而一致的接口,大多数Linux文件I/O只需要用到5个函数:open, read, write, lseek和close。除此之外,使用stat, access等其它I/O函数可以获取或设置文件的状态和权限等信息。对于目录文件的操作,Linux则提供了一些简单而特殊的编程接口。

文件和目录
  • 文件的属性被保存在文件的索引节点(inode)中。
  • 索引节点是文件系统中的一个特殊的数据块,用以保存文件自身的属性,包含了如下的信息:

    1. 文件使用的设备
    2. 索引节点号
    3. 文件访问权限和文件类型
    4. 文件的硬连接数
    5. 所有者的用户ID
    6. 组ID
    7. 设备文件的设备号
    8. 文件大小(单位为字节)
    9. 包含该文件的磁盘块的大小
    10. 该文件所占的磁盘块
    11. 文件的最后访问时间
    12. 文件的最后修改时间
    13. 文件状态的最后改变时间
  • 什么是目录?Linux文件系统将文件的索引节点号和文件名同时保存在目录中。目录是用于保存其它文件的节点号和名字的文件,是将文件的名称和它的索引节点号结合在一起的一张表。目录中每一对文件名称和索引节点号称为一个“连接”。目录文件中的每个数据项都是指向某个文件节点的连接。删除一个文件时,实质上是删除目录中与该文件对应的数据项,同时将文件的连接数减1。

  • 通常文件中包含一定的数据,磁盘中的普通文件和目录文件都有相应的磁盘区域存储数据。这些数据是存储在由索引节点指定的位置上的。而其他一些文件,如设备文件等,则不具有这样的磁盘存储区域。
文件和设备

  硬件设备在Linux中通常也被映射为文件。这些设备文件被放在Linux的/dev目录下。硬件设备可分为字符设备和块设备,两者的区别在于是否需要一次读写一整块,比如:
- 键盘:是一种字符设备,一次仅能读取一个字节。
- 硬盘:是一种块设备,每次至少读写一个扇区

  Linux环境下一类比较重要的设备是终端设备。终端是一种字符设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写。比较重要的终端设备有:
- 控制终端:代表进程的控制终端(键盘和显示屏或键盘和窗口)
- 控制台终端:代表控制台。错误信息和诊断信息通常会被发送到这个设备(打印终端,虚拟控制台,控制台窗口)
- /dev/null:代表空设备,所有写向这个设备的输出都将被丢弃,而读设备会立即返回文件尾标志。空设备通常用于输出重定向,以忽略某些错误输出。

系统调用和标准函数库
  • 系统调用:UNIX/Linux内核直接提供的编程接口,在内核空间运行。
  • C语言标准函数库:由一些函数构成的集合,完全运行在用户空间,其中可能使用系统调用来完成诸如访问硬件设备的底层功能。

注意:直接使用底层系统调用进行I/O操作的效率非常底下。原因如下:
1. 执行系统调用时,Linux必须从用户空间切换到内核空间,然后再切换回来。
2. 硬件会限制系统调用一次所读写的数据块大小,如块设备。

为此,应让每次系统调用完成尽可能多的工作。这正是C语言标准函数库所做的。C语言标准函数库带有缓冲机制,允许在缓冲区满或必须的情况下才使用底层的系统调用,这样减少了系统调用的次数,提供了效率。另外,有的库函数完全不用系统调用,只在用户空间完成特定的功能。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 贴了膏药后过敏怎么办 贴药膏后皮肤痒怎么办 贴完膏药过敏了怎么办 骨折后骨密度低怎么办 食品经营许可证过期了怎么办 40年的产权满后怎么办 五证合一后税务怎么办 互联业务登录页怎么办 vivo音量键坏了怎么办 琴岛通学生卡怎么办 云卡会员删除了怎么办 办健康证没空腹怎么办 办健康证吃饭了怎么办 发票盖了财务章怎么办 发票盖成公章了怎么办 发票上盖了公章怎么办 进京证怎么办在哪里办 去北京没进京证怎么办 单位的车怎么办进京证 房贷合同丢了怎么办 农合医疗卡丢失怎么办 手指断了怎么办能好吗? 被劳务派遣公司骗了怎么办 餐饮服务许可证过期了怎么办 中行u盾证书过期怎么办 84消毒液吸多了怎么办 八四消毒液烧手怎么办 怀孕了下身痒怎么办啊 4s店态度差怎么办 小区的卡丢了怎么办 开老板的车撞了怎么办 车后保险杠撞裂怎么办 车到期了忘了审怎么办 改过气的车费油怎么办 车内容易进灰尘怎么办 东风天龙油耗高怎么办 国六出来了国五怎么办 手动挡有7个档位怎么办 东风天锦160没劲怎么办 奇骏2.0动力不足怎么办 修汽车被师傅骂怎么办