【问题标题】:Linux terminal - printing lots of dataLinux终端 - 打印大量数据
【发布时间】:2012-06-10 22:40:21
【问题描述】:

我正在用 C 编程语言编写应用程序,可以监控远程计算机的系统信息、登录用户数、可用内存等。

我会将收集到的信息写入标准输出。但通常会有比终端的一个窗口更多的信息,所以我需要在结果中实现某种“滚动”。

我认为最简单的解决方案是打印前 25 行,然后等待用户向上或向下推并相应地重写所有行。

是否有一些更简单/更优雅的方式来处理终端上的此类输出?

编辑:忘了提,如果一些新输入来自某个远程计算机,我想刷新数据,例如:进程数更改。

【问题讨论】:

  • 如何打印所有内容并使用像 less 这样的寻呼机来滚动输出?

标签: c linux terminal


【解决方案1】:

听起来你需要诅咒。

这是guide to the ncurses library

这是一个老式的终端 GUI 库。像topmake menuconfig 这样的东西使用它,所以它在每个系统上。它可以让您停止思考“打印 25 行并刷新”,而不再思考“将数据放入可滚动的文本区域”。

【讨论】:

  • 你说的是可滚动的文本区域,但是做这个可滚动的面板将包括创建一个 Ncurses 窗口、打印字符串、然后监听用户输入,然后将所有内容向上或向下移动一行并编写新的?
  • @Andna:取决于你在做什么,你不必写一个新的。您可以通过newpad 获得pad 并更改其位置(一个函数调用)。
【解决方案2】:

使用外部分页器,例如more(或less)对输出进行分页。 Unix 的优势在于组合简单的命令,创建管道而不是重新发明已经存在的功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 2014-02-08
    • 2013-06-27
    • 2013-09-14
    相关资源
    最近更新 更多