我可以以某种方式使用 UNIX 系统调用读取控制台缓冲区吗?



我想创建一个智能调试实用程序,用于读取已经打印到 tty 的 stderr(例如,向后 1000 行(。

有没有任何类型的 UNIX API 调用允许我这样做?我找不到。

不,没有"UNIX API"调用可以做到这一点。 一些特殊情况可能有用:

  • 大多数终端仿真器都提供您可以查看的回滚区域。 为此的行数通常是可配置的;默认大小通常很小,例如 100 行。
  • 一些控制台终端,例如 Linux,具有类似的功能(参见示例 18。滚动,在键盘和控制台操作方法中(。

可以告诉一些终端实现提供屏幕转储。 通常,这些仅限于当前可见的屏幕:

  • xterm(菜单项以及转义序列(
  • Linux 控制台
  • (请参阅转储 Linux 控制台回滚缓冲区中提到的setterm,以及如何在 Linux 终端上获取由于滚动而丢失的控制台 o/p 中的其他解决方案,尽管没有提到setterm需要读取屏幕的权限(。 对于这些,有一些方法可以读取回滚,但只能提前准备。 正如问题的措辞,答案是否定的

通常,也没有转义序列来执行此操作,因为该方法(允许"任何"程序查看屏幕内容(通常被视为安全违规。

最新更新