第二章 文件操作
1. 在UNIX系统中,对文件的操作方法有两种:基于标准库函数的文件操作和基于系统调用的文件操作,二者应用不同,各具优势。
2. UNIX系统把数据存放在文件中,可以通过系统调用来操作文件,这些系统调用有open、create、read、write、lseek和close。
3. 进程对文件的读/写都要通过文件描述符,文件描述符表示文件和进程之间的连接。
4. 每次系统调用都会导致目态(用户态),与管态(核心态)之间的切换以及内核代码的执行,所以尽量减少程序中系统调用发生的次数有助于提高程序的运行效率。
5. 程序可以通过缓冲技术来减少程序调用的次数,仅当写缓冲区满或读缓冲区为空时才调用内核服务。
6. UNIX内核可以通过内核缓冲区来减少访问磁盘I/O的次数。
7. 磁盘上有文件和目录,文件和目录都是有内容和属性的。文件的内容可以是任意的数据,而目录的内容只能是文件名或目录名的列表。
8. 目录中的文件名或目录名指向文件或其他目录,内核提供了系统调用来读取目录的内容,以及读取和修改文件的属性。
9. 文件的类型,文件的访问权限和特殊属性,被编码到一个十六位整数中,可以通过掩码技术来读取这些信息 。
10. UNIX文件系统包含3个主要部分:超级块、i节点表和数据区域。文件内容,存储在数据区,文件属性存储在i节点上。i节点是文件的唯一标识。
11. 相同的i节点可能以不同的名字在若干个目录中出现。每个入口被称为指向文件的硬链接。符号连接是通过文件名引用文件,而不是i节点号。
12. 若干个文件系统的目录树可被整合成一棵树。内核将一个文件系统的目录连接到另一个文件系统的根的操作称为装载(挂载)。
13. 磁盘文件和设备文件都有名字,属性和权限。普通的文件系统调用open、create、read、write、lseek和close均可被应用于设备文件。文件权限位以同样的方式应用于控制设备文件和磁盘文件的访问。
14. 在处理和传输数据方面,到磁盘文件的连接不同于到设备文件的连接。内核中管理与设备连接的代码被称为设备驱动程序。通过调用fcntl和ioctl函数,进程可以读取和改变设备驱动程序的设置。
15. 函数tcgetattr和函数tcsetattr专门用来提供对终端驱动器的控制。
网友评论