Termios
Termios |
termios的实现中,有大量的参数设置,还有伪终端的说法。原因就在于当初UNIX发明时,(上世纪七十~八十年代),在美国,西欧大学里面用的都是大型机加客户终端,学生们用的是串口方式与大型机进行交流,通讯。所以,当时很多软件的设计都是针对这种情况而开发的。包括termios,tty,X window等等。因为要在串口上传输,所以不得不定义很多按键的组合符号和很多传输模式。
目录
简介
Linux中的控制台界面,要大量用到Termios库的内容。但是,总的来看,这些东西已经过时了,应该用更简单的方案来代替它了,尽管它是POSIX标准的一部分。以我们日常的使用情况来看,串口已经渐渐退出了历史舞台。几乎只在嵌入式开发群中使用(因为串口最容易出来,所以开发的第一步就是要把串口调通,这样才能得到信息,才能方便进一步开发)。就我们的情况来看,我们的终端基本上只与显示系统挂钩(也可从串口输出,但一般只做调试用),真正更高级的互联传输功能都是通过网卡通过多种协议完成的(tcp/ip是最基本的)。所以,我们在新设计的控制台实现中,可以完全简化设计的方案,按照最基本的来设计就行了。但是,为了做到设计出来的代码的层次性和可移植性,Linux/Unix下终端的理论是要认真学习一下的(比如原始模式,标准模式等等),看别人是怎样做到功能的抽象和分离的。
评价
Unix V7 以及很多后来的系统有一个波特率的列表,在十四个值 B0, ..., B9600 之后可以看到两个常数 EXTA, EXTB ("External A" and "External B")。很多系统将这个列表扩展为更高的波特率。tcsendbreak 中非零的 duration 有不同的效果。SunOS 指定中断 duration*N 秒,其中 N 至少为 0.25,不高于 0.5 。Linux, AIX, DU, Tru64 发送 duration 微秒的 break 。FreeBSD, NetBSD, HP-UX 以及 MacOS 忽略 duration 的值。在 Solaris 和 Unixware 中, tcsendbreak 搭配非零的 duration 效果类似于 tcdrain。[1]