UNIX系统中C语言的设备I/O控制详解
1. 本地模式字
在新的tty驱动程序中,额外的模式是通过本地模式字来设置的。这个模式字的功能类似于sgttyb结构中的sg_flags字,它实际上就是一个32位整数,会和下面要讨论的操作常量之一一起传递给ioctl函数。
一些比较有用的模式如下:
| 模式 | 描述 |
| ---- | ---- |
| LCRTBS | 当输入擦除字符时,执行退格操作,而非直接擦除字符。 |
| LCRTERA | 对于CRT终端,通过为每个字符打印 “退格 空格 退格” 来执行退格操作,从而在屏幕上擦除该字符。 |
| LCRTKILL | 使用 “退格 空格 退格” 方法擦除整行来执行行删除操作。这与旧的tty驱动程序不同,旧驱动程序只是简单地回显一个新行。 |
| LCTLECH | 将输入控制字符(除擦除和删除字符外)打印为^X,其中X是控制字符。通常,字符会按原样回显(例如,^G是响铃字符,会发出蜂鸣声等)。 |
| LTOSTOP | 当设置此模式时,如果后台进程尝试向终端写入数据,它会通过信号被停止,并且在被置于前台之前无法向终端写入数据。除非用户使用csh或其他支持作业控制的shell,否则此模式相对无用。 |
相关的操作常量如下:
| 操作常量 | 描述 |
| ---- | ---- |
| TIO