终端的规范模式和原始模式(raw mode)是指终端设备在处理输入和输出时的两种不同工作方式.
- 规范模式: 终端会将输入的数据存储在缓冲区中,直到一行输入结束(通过回车键)才将其发送给程序进行处理。这种模式适合于大多数用户交互式程序,因为它允许用户在输入时进行编辑和更正。
- 原始模式: 终端不会进行缓冲,而是将每个输入字符都立即发送给程序进行处理。这种模式适用于需要对每个输入字符进行实时处理的程序,如实时游戏或终端仿真器。
要将终端设置为原始模式,程序通常需要使用系统调用(如Linux中的tcsetattr)来更改终端的属性。在程序结束时,程序应该将终端属性重置为规范模式,以确保终端可以正常工作.
ASCII 字符被分为两种类型:
- 控制字符
- 非控制字符
控制字符是 ASCII 字符集中的一组字符,用于控制文本的格式和传输。这些字符不能用于显示文本,因为它们会影响文本的格式,例如换行、退格、清屏等。以下是 ASCII 控制字符的列表:
- 空字符 (NUL)
- 开始标题 (SOH)
- 文本传输开始 (STX)
- 文本结束 (ETX)
- 传输块结束 (EOT)
- 请求 (ENQ)
- 确认 (ACK)
- 响铃 (BEL)
- 退格 (BS)
- 水平制表符 (HT)
- 换行符 (LF)
- 垂直制表符 (VT)
- 换页 (FF)
- 回车 (CR)
- 转义字符 (ESC)
- 文件分隔符 (FS)
- 组分隔符 (GS)
- 记录分隔符 (RS)
- 单元分隔符 (US)
- 删除字符 (DEL)
非控制字符是可以显示和打印的 ASCII 字符。这些字符包括字母、数字、标点符号等,它们不会影响文本的格式。以下是 ASCII 非控制字符的一些例子:
- 大写字母 A 到 Z 和小写字母 a 到 z
- 数字 0 到 9
- 标点符号,例如逗号、句号、分号和冒号
- 特殊字符,例如 @、#、$、%、^、&、*、(、)、-、_、+、=、{、}、[、]、\、|、;、'、"、<、>、?、/ 等。