UNIX终端I/O处理:POSIX标准与实践

需积分: 10 2 下载量 166 浏览量 更新于2024-12-21 收藏 906KB PDF 举报
"UNIX 终端I/O处理的复杂性和两种不同风格的介绍,包括POSIX.1标准的制定,以及在SVR4和4.3+BSD中的扩展。此外,还提到了终端I/O在操作系统中的广泛应用和两种工作模式:规范方式和非规范方式。" 在UNIX操作系统中,终端I/O是一个关键且复杂的领域,涉及到用户交互、数据传输等多种功能。由于终端可以是实际的终端设备、计算机间的直接连接、调制解调器或是打印机等,因此其处理机制相当复杂。70年代末期,UNIX的终端I/O处理出现了两种主要风格:一种源自系统Ⅲ并由系统Ⅴ继承,另一种则源于V7系统并成为伯克利类系统的标准。这些风格成为了POSIX.1标准的基础,以统一不同UNIX实现的接口。 本章主要探讨的是POSIX.1定义的终端I/O函数,以及在SVR4和4.3+BSD这两个UNIX变种中增加的功能。POSIX.1标准旨在提供一个兼容性更强的环境,使得应用程序可以在不同实现的UNIX系统上运行,终端I/O是其中的重要组成部分。 终端I/O有两种主要的工作模式:规范方式输入处理和非规范方式输入处理。在规范方式下,输入被处理成行,每个`read`请求最多返回一行数据,这通常是shell和大多数命令行工具的默认行为。相反,非规范方式下,输入的字符不按行组装,这种方式适用于需要实时处理单个字符的程序,如文本编辑器`vi`,它允许用户输入不以新行结束的命令序列,并且对特殊字符有特定的处理规则。 V7和BSD类系统提供了更细致的终端输入控制,包括精细加工方式、原始方式和cbreak方式。精细加工方式处理输入行并处理特殊字符,原始方式则不进行任何处理,cbreak方式则对部分特殊字符进行处理,但不组装成行。这些控制模式为开发者提供了更大的灵活性,以适应不同应用场景的需求。 通过示例程序和后续章节,读者将深入理解如何在UNIX系统中进行终端I/O编程,包括与PostScript打印机通信和涉及调制解调器的远程登录。掌握这些知识对于开发需要与终端交互的应用程序至关重要,因为终端I/O不仅关乎用户界面,还直接影响到程序的效率和用户体验。