美文网首页
《基于UNIX/Linux的C系统编程》

《基于UNIX/Linux的C系统编程》

作者: WB莫遥燚 | 来源:发表于2016-12-24 22:14 被阅读92次

第二章 文件操作

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专门用来提供对终端驱动器的控制。

相关文章

  • 《基于UNIX/Linux的C系统编程》

    第二章 文件操作 1. 在UNIX系统中,对文件的操作方法有两种:基于标准库函数的文件操作和基于系统调用的文件操作...

  • C语言笔记(学习开发一个linux小程序)

    一、准备工作 语言是基于UNIX开发的,所以使用c语言要在UNIX或linux(等类Unix的系统)上。但wind...

  • linux系统编程环境配置

    Windows 10系统下Linux子系统如何配置系统编程环境 主要针对《Linux/Unix系统编程手册》代码 ...

  • Mac 下shell文件的创建和使用

    介绍(Mac和Linux的区别) Linux是基于Unix开发的,而Mac系统有Unix系统演变而来;因此M...

  • 书籍

    PHPer 深入理解计算机系统现代操作系统C 程序设计语言C 语言数据结构和算法Unix 环境高级编程linux ...

  • OpenGL ES

    OpenGL 是用于2D/3D图形编程的一套基于C语言的统一接口. windows,Linux,Unix上均可兼容...

  • 新手怎么在Linux系统上用c语言编程

    从课程目录来看,课程包含两部分:标准C语言编程和Linux系统编程。C语言编程使用C语言标准库;Linux系统编程...

  • Linux系统权限

    Linux系统权限 Linux操作系统是基于Unix的多用户以及权限隔离的文件系统,想要掌握Linux,理解Lin...

  • 【linux/unix系统编程手册笔记】系统编程概念

    【Linux/Unix系统编程手册笔记】系统编程概念 1.系统调用 系统调用: 创建新进程 执行I/O 进程间通信...

  • 进程间通信

    Android系统是基于Linux内核的,而Linux内核继承和兼容了丰富的Unix系统进程间通信(IPC)机制。...

网友评论

      本文标题:《基于UNIX/Linux的C系统编程》

      本文链接:https://www.haomeiwen.com/subject/hqdrvttx.html