我是否可以使用UNIX系统调用读取控制台缓冲区?

我是否可以使用UNIX系统调用读取控制台缓冲区?,unix,terminal,console,buffer,tty,Unix,Terminal,Console,Buffer,Tty,我想创建一个智能调试实用程序,读取已经打印到tty的stderr(比如说,返回1000行) 是否有任何类型的UNIX API调用允许我这样做?我找不到一个。不,没有“UNIX API”调用可以实现这一点。一些特殊情况可能有用: 大多数终端模拟器都提供了一个可供查看的回滚区域。这方面的行数通常是可配置的;默认大小通常较小,例如100行 一些控制台终端(例如Linux)具有类似的功能(例如,请参见键盘和控制台操作指南) 可以告诉一些终端实现提供屏幕转储。通常,这些仅限于当前可见的屏幕: xte

我想创建一个智能调试实用程序,读取已经打印到tty的stderr(比如说,返回1000行)

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

不,没有“UNIX API”调用可以实现这一点。一些特殊情况可能有用:

  • 大多数终端模拟器都提供了一个可供查看的回滚区域。这方面的行数通常是可配置的;默认大小通常较小,例如100行
  • 一些控制台终端(例如Linux)具有类似的功能(例如,请参见键盘和控制台操作指南)
可以告诉一些终端实现提供屏幕转储。通常,这些仅限于当前可见的屏幕:

  • xterm(菜单项和转义序列)
  • Linux控制台(请参阅中提到的
    setterm
    ,以及中提到的其他解决方案,尽管没有提到
    setterm
    需要特权才能读取屏幕)。对于这些人,有很多方法可以阅读回卷,但只能提前准备。按照问题的措辞,答案是否定的
通常,也没有转义序列来执行此操作,因为这种方法(允许“任何”程序查看屏幕内容)通常被视为违反安全性