伪终端


引言

在终端和运行的程序之间有一个终端行规程(见http://www.cnblogs.com/nufangrensheng/p/3575752.html中的图18-2),通过它我们能够在终端上设置特殊字符(退格、行删除、中断等)。但是,当一个登陆请求到达网络连接时,终端行规程并不是自动被加载到网络连接和登陆程序shell之间的。

概述

伪终端这个术语暗示下图显示了使用伪终端时相关进程的典型结构。其中关键点如下:

    通常一个进程打开伪终端设备,然后调用fork。子进程建立了一个新会话,打开一个相应的伪终端从设备,将其描述符复制到标准输入、标准输出和标准出错,然后调用exec。伪终端从设备成为子进程的控制终端。

    对于伪终端从设备上的用户进程来说,其标准输入、标准输出和标准出错都是终端设备。对于这些文件描述符,用户进程能够调用终端I/O章节中介绍的所有输入/输出函数。但是因为在伪终端从设备之下并没有真正的终端设备,无意义的函数调用(改变波特率、发送中断符、设置奇偶校验等)将被忽略。
  1. 任何写道伪终端设备的东西都会作为从设备的输入,反之亦然。事实上所有从设备端的输入都来自于伪终端主设备上的用户进程。这看起来像一个双向管道,但从设备上的终端行规程使我们拥有普通管道没有的其他处理能力。

伪终端的典型用途

相关内容