linux学习笔记-读《Linux编程技术详解》(4-1)-文件和目录
2010-04-01 23:01
316 查看
Windows是按照设备标识符来划分目录的,Linux将具体的设备挂载到一个独立的树形层次结构中。对同一个目录挂载不同的分区后,挂载的文件目录将覆盖原有的内容。
Linux的虚拟文件系统简称VFS,是Virtual Filesystem的缩写。在Linux使用ext文件系统之前,真实的文件系统是和内核整合在一起的。后来为支持多种不同文件系统,Linux采用了在UNIX操作系统中广泛采用的设计思想,通过VFS来屏蔽底层文件系统的实现细节和差异。VFS最早由Sun公司提出,其目的是实现网络文件系统(NFS)。
VFS基本思想是将各种文件系统的公共部分抽取出来,形成一个抽象层。对用户程序而言,VFS提供了文件系统的系统调用接口。而对具体的文件分区格式而言,VFS通过一系列统一的外部调用接口来屏蔽实现细节,使得文件系统的调用不用关心底层的存储介质和文件系统类型。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201004/526d657c444d9aad6991213415ae0942.png)
VFS屏蔽不同分区格式间读写差异示意图
当Linux系统初始化时,首先会在内存中初始化VFS目录树。需要注意的是,VFS目录树不等同于人们观念中的文件系统目录树。VFS目录树的主要用途是给实际的文件系统提供挂载点。也就是说,使用mount命令将某个设备挂载到某个目录下,实际上是挂载到了内存中的VFS目录树上。
当需要创建目录树时,首先会对VFS进行查询,以获得建立目录的上级目录的信息。例如,要建立/media/fat32目录,首先会找到根目录,然后到media目录。如果查询过程中发现用户没有权限在/media目录下建立目录,会调用相关处理过程。如果不存在权限问题,VFS将调用相关处理建立目录。
当用户在/media/fat32目录下挂载某个分区时,VFS要将对VFS目录树的操作转化为挂载到这个目录的具体文件系统的操作。例如,使用 ”ls -l /media/fat32” 查看刚挂载到/media/fat32目录下的 /dev/hda3 目录的内容时,VFS文件系统要将对VFS目录树的操作转化为对挂载在该目录的fat32文件系统的操作。
getcwd函数获得当前工作目录,将工作目录保存在调用者提供的字符串中,字符串的大小是由用户分配。对进程而言,每个进程都有一个当前工作目录的概念。
pathconf函数可以动态获得当前系统的目录最大长度。PATH_MAX是POSIX标准中可选的一个常量。也就是说该变量可能在limits.h中有定义,也可能没有。它表示目录的最大长度,和使用pathconf函数获得的结果是完全相同的。
error: #include <errno.h>,里面会有extern int errno;的声明。
通常用法是,系统调用或库函数成功返回0,失败返回-1,而失败原因在errno里。
要想输出对应的错误信息,可以用perror(),如perror(“abc”);
相关文章推荐
- linux学习笔记-读《Linux编程技术详解》(4-2)-文件和目录
- Linux学习笔记(八)文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限
- 【Linux学习笔记】Linux的文件权限与目录配置——笔记
- [Linux] Linux学习笔记(5)-文件与目录管理
- Linux学习笔记--rm命令(删除文件或目录)
- Linux学习笔记2——Linux中常用文件目录操作命令
- linux学习笔记之 文件和目录管理
- 【Linux】Shell学习笔记之四——文件和目录管理(硬连接和软连接)
- 实验楼linux学习笔记(四:Linux 目录结构及文件基本操作
- linux学习笔记 - 文件与目录管理
- Unix学习笔记-------目录遍历实例----Linux下判断是否是一个目录还是一个文件的方法
- Linux学习笔记之——用户、用户组、文件属性权限、目录概念
- Linux目录创建删除,文件查看,cp命令学习笔记
- Linux学习笔记之目录和文件权限
- Linux学习笔记,Linux文件系统,文件管理,目录管理
- linux学习笔记----文件与目录管理
- linux学习笔记之文件目录
- 【学习笔记——Linux】Linux文件与目录管理
- 【Linux学习笔记十一】linux文件和目录属性管理
- (Linux学习笔记二)linux的文件权限与目录配置