- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UNIX环境高级编程11
下载
下载
第11章 终 端 I / O
11.1 引言
在操作系统中,终端 I / O 处理是个非常繁琐的部分, U N I X也不例外。在很多版本的 U N I X
手册中,终端I / O 的手册页常常是最长的部分之一。S V I D 中的t e r m i o手册页至少有 1 6页。
7 0年代后期,U N I X终端I / O 处理发展成两种不同的风格。一种是系统Ⅲ在 V 7 的基础上进行
了很多改变而形成的,这种风格由系统Ⅴ沿续下来;另一种则是 V 7 的风格,它正成为伯克利
类系统的标准组成部分。如同信号一样, P O S I X . 1在这两种风格的基础上制定了终端 I / O标准。
本章将介绍P O S I X . 1 的终端函数,以及S V R 4和4 . 3 + B S D 的增加部分。
终端I / O 的用途很广泛,包括:终端、计算机之间的直接连接、调制解调器、打印机等等,
所以它就变得非常复杂。在后面的若干章中,开发了两个例示终端I / O 的程序:一个与P o s t S c r i p t
打印机进行通信(见第1 7章),另一个涉及调制解调器以及远程计算机登录(见第1 8章)。
11.2 综述
终端I / O有两种不同的工作方式:
(1) 规范方式输入处理。在这种方式中,终端输入以行为单位进行处理。对于每个读要求,
终端驱动程序最多返回一行。
(2) 非规范方式输入处理。输入字符不以行为单位进行装配。
如果不作特殊处理,则默认方式是规范方式。例如:若 s h e l l 的标准输入、输出是终端,在
用r e a d 和w r i t e将标准输入复制到标准输出时,终端以规范方式进行工作,每次 r e a d最多返回一
行。处理整个屏幕的程序,例如 v i编辑程序使用非规范方式,其原因是其命令是由不以新行符
终止的一个或几个字符组成的。另外,该编辑程序使用了若干特殊字符作为编辑命令,所以它
也不希望系统对特殊字符进行处理。例如, C t r l - D字符通常是终端的文件结束符,但在 v i 中它
是向下滚动半个屏幕的命令。
V 7和B S D类的终端驱动程序支持三种终端输入方式: (a) 精细加工方式(输入
装配成行,并对特殊字符进行处理),(b) 原始方式(输入不装配成行,也不对特
殊字符进行处理),(c) cbreak 方式(输入不装配成行,但对某些特殊字符进行处
理)。程序11 - 1 0显示了将终端设置为c b r e a k或原始方式的P O S I X . 1 函数。
P O S I X . 1定义了11个特殊输入字符,其中 9个可以改变。本章已经用到了其中几个,例如:
文件结束符(通常是 C t r l - D ),挂起字符(通常是C t r l - Z )。11 . 3节对其中每个字符都进行了说
明。
终端设备是由一般位于内核中的终端驱动程序所控制的。每个终端设备有一个输入队列,
一个输出队列,见图 11 - 1。
第 11章 终 端 I/O 2 4 7
下载
进程写的下一个字符 进程读的下一个字符
若回送字符
输出队列 输入队列
传送给设备的下一个字符 设备读的下一个字符
图11-1 终端设备的输入、输出队列的逻辑结构
对此图要说明下列几点:
• 如果需要回送,则在输入队列和输出队列之间有一个隐含的连接。
• 输入队列的长度M A X _ I N P U T (见表2 - 5 )是有限值,当一个特定设备的输入队列已经填
满时,系统作何种处理依赖于实现。当此发生时,大多数 U N I X 系统回送响铃字符。
• 图中没有显示另一个输入限制M A X _ C A N O N ,它是在一个规范
文档评论(0)