019_伪终端.pdfVIP

  • 9
  • 0
  • 约2.42万字
  • 约 22页
  • 2017-06-04 发布于河南
  • 举报
019_伪终端

下载 下载 第1 9章 伪 终 端 19.1 引言 第9章介绍进行终端登录时,需要通过一个终端设备自动提供终端的语义。在终端和运行 程序之间有一个终端行规程(见图 11 - 2),通过这个规程我们能够在终端上设置特殊字符(退 格、行删除、中断等)。但是,当一个登录请求到达网络连接时,终端行规程并不是自动被加 载到网络连接和登录程序 s h e l l之间的。图9 - 5显示了一个伪终端设备驱动程序被用来提供终端 语义。 除了用于网络登录,伪终端还被用在其他方面,本章将对此进行介绍。我们将首先提供 S V R 4和4 . 3 + B S D系统下用于创建伪终端的函数,然后使用这些函数编写一个程序用来调用 p t y 。 我们将看到这个程序的各种使用:在输入字符和终端显示之间进行转换( B S D 的码转换程序) 和运行协同进程来避免程序 1 4 - 1 0中遇到的缓存问题。 19.2 概述 伪终端(pseudo terminal )这个名词暗示了与一个应用程序相比,它更加像一个终端。但 事实上,伪终端并不是一个真正的终端。图 1 9 - 1显示了使用伪终端的进程的典型结构。其中 用户进程 用户进程 关键点如下: (1) 通常一个进程打开伪终端主设备然后 调用f o r k 。子进程建立了一个新的对话,打开 一个相应的伪终端从设备,将它复制成标准输 读、写函数 读、写函数 入、标准输出和标准出错,然后调用 e x e c 。伪 终端从设备成为子进程的控制终端。 (2) 对于伪终端从设备之上的用户进程来 终端行规程 说,其标准输入、标准输出和标准出错都能当 内核 作终端设备使用。用户进程能够调用第 11章中 讲到的所有输入/输出函数。但是因为在伪终端 伪终端主设备 伪终端从设备 从设备之下并没有真正的设备,无意义的函数 调用(改变波特率、发送中断符、设置奇偶校 验等)将被忽略。 (3) 任何写到伪终端主设备的输入都会作 图19-1 典型的伪终端进程结构 为从设备端的输入,反之亦然。事实上所有从 设备端的输入都来自于主设备上的用户进程。这看起来就像一个流管道(见图 1 5 - 3),但从设 备上的终端行规程使我们拥有普通管道之外的其他处理能力。 图1 9 - 1显示了B S D 系统中的伪终端结构。 1 9 . 3 . 2节将介绍如何打开这些设备。在 S V R 4系统 中伪终端是使用流系统来创建的(见 1 2 . 4节)。图1 9 - 2详细描述了 S V R 4系统中各个伪终端模块 第 1 9章 伪 终 端 4 7 7 下载 之间的关系。虚线框中的两个流模块是可选的。请注意从设备上的三个流模块同程序 1 2 - 1 0 (网络登录)的输出是一样的。1 9 . 3 . 1节将介绍如何组织这些流模块。 从现在开始将简化以上图示,首先不再画出图 1 9 - 1的“读、写功能”或图 1 9 - 2的流首。使 用缩写“p t y ”表示伪终端,并将图 1 9 - 2中所有伪终端从设备之上的流模块集合表示为“终端 行规程”模块。 用户进程 用户进程 流首 流首 流模块 流模块

文档评论(0)

1亿VIP精品文档

相关文档