深入探索 Linux 终端控制的底层奥秘
1. 终端接口概述
终端接口,即 tty 接口,其起源可追溯到用户通过连接着打印机的高级打字机与计算机交互的时代。它基于一个硬件模型,该模型假设键盘和打印机通过串行端口连接到远程计算机系统,这与当前的客户端 - 服务器计算架构有一定的渊源。
这个硬件模型虽然复杂,但具有很强的通用性。几乎所有程序与输入输出设备(如打印机、控制台、xterms 或网络登录)交互的情况,都可以看作是该通用模型的子集。这为程序员提供了一个统一的编程接口,简化了编程任务。
终端接口之所以复杂,主要有两个原因。一方面,人类的交互需求多样,用户希望根据自己的习惯和喜好控制交互方式,这使得接口的功能和特性不断增加。另一方面,终端接口需要处理来自各种不同输入设备(如不同型号的键盘、鼠标、操纵杆等)的输入,以及向各种不同输出设备(如调制解调器、打印机、绘图仪等)输出数据,众多的硬件设备要求接口具备一定的复杂性。
2. 终端控制的 POSIX termios 接口
POSIX.1 定义了一个用于查询和操作终端的标准接口——termios,它在系统头文件 <termios.h> 中定义。termios 与 System V UNIX 的 termio 模型最为相似,同时也融合了一些源自 Berkeley 的 UNIX 系统的终端接口特性。
从程序员的角度来看,termios 是一个数据结构和一组用于操作该结构的函数。以下是 termios 数据结构的定义:
#include <termios.h&
超级会员免费看
订阅专栏 解锁全文
4607

被折叠的 条评论
为什么被折叠?



