《Unix-Linux编程实践教程》读书笔记(五)

1.      本章只要通过对比学习设备与文件/目录连接之间的相似之处和不同之处,进而学习连接控制的知识,包括文件/目录连接和设备连接两个方面。

2.      设备就像文件:

         1  unix秉承一切皆文件的思想,设备也具有文件名

         2 设备与系统调用:设备支持与文件相关的系统调用

         3 例子:终端就像文件(重定向等操作在终端上同样可行)

         4 设备文件的属性:通过ls –l命令可以查看文件的具体属性,同样设备文件的属性也能通过该命令进行查看。但是,某些属性的解释不一样:文件类型,文件大小(主设备号、从设备号),文件的访问权限

         5 编写write程序:通过程序中调用的函数等进一步印证设备连接的操作方式和调用的函数与文件访问的相同

         6 设备文件和inode节点:目录仅仅是文件名和inode节点的对应关系,不能在目录中区分磁盘文件和设备文件。需要在inode节点中的stat结构中st_mode中。磁盘文件的inode节点包含数据块的指针,而设备文件的inode节点包含的是内核中设备驱动程序的指针。

3.      设备与文件的不同之处:二者的不同之处主要体现在不同的连接属性,其实各个设备之间的不同之处也体现在连接的属性之上。

4 磁盘连接的属性

         1 属性一:缓冲。修改磁盘连接属性的流程(获取当前属性;构造属性标志;设置属性),支持磁盘连接属性操作的接口(fcntl),设置O_SYNC位会关闭缓冲机制

         2 属性二:自动添加模式。A\B两个进程同时写某个文件时引起的竞争情况,自动添加模式能将定位函数lseekwrite绑定成一个原子操作,设置O_APPEND位会绑定上述两个函数,进而去除竞争风险

         3 open操作控制文件描述符:在open函数的参数中可以设置连接的属性

5.      终端连接的属性

         1 通过listchar程序,可以看到文件描述符中间层对数据的处理。这里的处理并非十分简单,实施这样处理的主体是终端驱动程序

         2 终端驱动程序:处理进程和外部设备之间数据流的内核子程序的集合,该程序具有多种属性值,进程可以调用相应的接口进行控制,以定制驱动程序的处理过程。

         3  sty命令:该命令可以读取和修改终端驱动程序的设置

         4 终端驱动程序对传入的数据进行的操作大致分为四个方面:输入、输出、控制、本地。

         5 设置终端驱动程序:关于函数

                   设置终端驱动程序的过程同设置磁盘连接属性的流程相同。涉及的函数:tcgetattrtcsetattr。掩码技术(在ls –l命令中介绍过)。

         6)几个例子,说明函数的使用,掩码技术的使用等。

         7 设备作为文件被存放在/dev目录下。

6.      其它设备编程(函数 ioctl的使用)

7.      文件、设备和流

         任何数据源和目的地都被unix视为文件。

对磁盘连接和设备连接指向的文件的操作方式和接口大致相同,但是对二者连接本身(连接属性)的操作不同。

8.      小结

         内核在进程和外部世界之间交换数据,这里的外部世界包含磁盘文件、终端、外部设备。到磁盘文件的链接和到终端的链接之间有相似之处也有差异。

         设置磁盘连接和终端连接的流程相同,但调用的函数不一样。

----------------------------------------------------------------------------------------

本文链接http://blog.csdn.net/yongchurui/article/details/26271549

2014.05.19


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值