【问题标题】:Is it possible to detect a terminal needing a `reset`?是否可以检测到需要“重置”的终端?
【发布时间】:2021-05-27 09:25:17
【问题描述】:

我编写的程序经常崩溃,使终端处于 S-Lang 库状态(类似于 ncurses)。我想在开发的分支 Makefile main all 目标中添加一个检查,以检查这种不正确的状态,并自动调用 reset 命令。如何完成这项任务?

【问题讨论】:

    标签: console console-application reset xterm pty


    【解决方案1】:

    reset 做了两件事;您可以编写一个检测其中之一的 shell 脚本:

    • 它重置终端 I/O 模式(shell 脚本可以使用 stty 检查)
    • 它将转义序列发送到终端(这通常会改变终端中没有合适的查询/报告转义序列的内容)。

    对于后者,您会发现很难确定当前选择的字符集,例如画线。如果终端设置为显示画线字符,这就是人们想要运行 reset 的常见原因(例如,将二进制文件放到屏幕上)。

    恰好有一个 VT320 功能 (DECCIR) 可以提供此信息(由 xterm 实现):

    但对于其他终端,您不太可能发现它已实现:

    (iTerm2 不这样做)

    (VTE 也没有)。您可以在vt100.net 上阅读 VT510 手册中描述该功能的摘录

    【讨论】:

      猜你喜欢
      • 2012-08-30
      • 2015-12-25
      • 1970-01-01
      • 2010-10-10
      • 2011-12-27
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      相关资源
      最近更新 更多