文章
· 十二月 8 阅读大约需 3 分钟

第四十四章 终端输入 输出 - 特殊协议字符影响终端 I O

第四十四章 终端输入 输出 - 特殊协议字符影响终端 I O

特殊协议字符影响终端 I O

每个操作系统都会拦截某些协议字符 (UNIX) 或组合键(例如 Windows 平台上的CTR-ALT-DEL ),以防止这些字符影响 IRISWindows 控制台不会尝试覆盖这些操作系统特征。

其他特殊字符可以改变例程的执行方式,但不会出现在READ命令变量中。在图像模式下操作终端会取消这些效果,并使 IRIS 像对待任何其他字符一样对待这些字符。

READ受输出和输入控制字符的影响。 READ只是读取除终止字符之外的所有其他控制字符。它不回应他们。

输出控制字符影响例程的流程和输出。下表对此进行了描述:

输出控制字符

输出控制字符 十进制值 定义
Ctrl-C 3 如果启用了中断,则Ctrl-C会中断例程的执行。该例程的行为就像发生错误。如果禁用中断,则Ctrl-C会导致 IRIS 丢弃当前READ中迄今为止输入的任何内容。可以使用Ctrl-C中断需要网络操作的全局模块请求。要捕获Ctrl-C ,请设置特殊变量$ZTRAP 。有关其他信息,请参阅有关启用中断的部分。
Ctrl-S 19 Ctrl-S暂停到终端的输出。当 IRIS 遇到Ctrl-Q时,终端输出将恢复。
Ctrl-Q 17 Ctrl-Q恢复由Ctrl-S暂停的输出。

输入控制字符影响输入。图像模式(I 协议)将这些字符视为数据,但在正常模式下它们会影响当前READ命令的输入。这些字符的描述如下表所示:

输入控制字符

输入控制字符 小数值 定义
Delete 127 删除字符删除最后输入的字符。如果重复按 Delete 键,则会从右向左删除字符,但不会超出当前READ的开头。删除使用退格键删除 CRT 屏幕上的最后一个字符。在打印终端(例如电传打字机)上以反斜杠字符(“\”)形式删除回显。
Ctrl-U 21 删除自当前READ开始以来输入的所有字符或 UNIX 预输入缓冲区中直到最后一个回车符的内容。 Ctrl-U擦除 CRT 上删除的字符;在打印机上,它会回显 ^U 并发送 ReturnLineFeed 要完全刷新预输入缓冲区,请使用Ctrl-X
Ctrl-H 8 在某些系统上执行与删除相同的功能。
Return 13 在除“I”(图像模式)之外的所有协议中,回车都会结束READ
Escape 27 开始转义序列。序列本身结束READ ,并且$ZB包含完整序列,包括前导 EscapeIRIS 不会回显序列中的字符,但它会更改$X$Y,除非在WRITE *命令中包含转义序列。请参阅本页前面的$X$Y 以及光标位置。无效的转义序列设置$ZA的位 8。考虑这个例子, READ X。输入字符“AB”Escape“E”后, X将包含两个字符“AB”,而$ZB包含两个字符 Escape E$X对于AB会增加 2,但对于 $ZB 则不会增加E。
LineFeed 10 IRIS 将 LineFeed 解释为所有终端 I/O的终止符。
Tab 9 Tab 是一个数据值,它显示为空格,将$X加一,并作为 Tab 字符存储在READ返回的字符串中。对于除“T”(终止符)之外的所有协议都是如此。在“T”协议中,制表符是终止符控制字符。

禁用 UNIX® 作业控制

在 IRIS 中使用 UNIX® 作业控制字符Ctrl-Z可能会导致严重问题。因此,当在 UNIX® shell 支持作业控制的平台上进入 IRIS 时, IRIS 会自动禁用Ctrl-Z 。当退出 以及发出$ZF(-1)调用来执行 UNIX® shell 命令时, IRIS 会重新启用Ctrl-Z

READ 命令如何处理输入

READ命令处理从输入缓冲区到达的每个字符。下表显示了正常模式下如何进行此处理。下图显示了READ命令如何处理图像模式数据。

讨论 (0)1
登录或注册以继续