1. 概念
伪终端这个术语是指,对于一个应用程序而言,它看上去像一个终端,但事实上它并不是一个真正的终端。下图是伪终端的一个典型安排
- 通常,一个进程打开伪终端主设备,然后调用fork,子进程建立一个新的会话,打开一个相应的伪终端从设备,将其文件描述符复制到stdin、stdout、stderr。然后调用exec执行新程序。伪终端从设备成为了子进程的控制终端。
- 对于伪终端从设备上的用户进程来说,其stdin、stdout、stderr都是终端设备。通过这些描述符,用户进程能够处理第18章中的所有终端I/O函数。但是因为伪终端从设备不是真正的终端设备,所以无意义的函数调用将被忽略(如设置波特率函数等)
- 任何写到伪终端主设备的都会作为从设备的输入,反之亦然。这看起来像一个双向管道,但是从设备上的终端行规程(见18章)使我们拥有普通管道没有的其他处理能力。
伪终端的应用:
-
网络登录服务器:
伪终端可用于构造提供网络登录的服务器。如telnetd和rlogind服务器。注意,驱动伪终端主设备的进程通常同时读写另一个I/O流,即TCP/IP数据流。