2012-06-06 65 views
2

我正在用C编程语言编写应用程序,它能够监控远程计算机的系统信息,登录用户数量,可用内存等。Linux终端 - 打印大量数据

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

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

是否有一些更容易/更优雅的方式来处理终端上的这种输出?

编辑:忘记提及,如果某些新输入来自某个远程计算机,我想刷新数据,例如:进程数发生变化。

+3

如何打印所有的内容并使用较少的传呼机滚动输出? – Artefact2

回答

3

听起来像你需要诅咒。

这是guide to the ncurses library

这是一个老派的GUI终端库。像topmake menuconfig这样的东西使用它,所以它在每个系统上。它允许你停止思考“打印25行和刷新”以及更多关于“将数据放入可滚动的文本区域”的内容。

+0

你说可滚动的文本区域,但做这个滚动面板将包括创建一个Ncurses窗口,打印字符串,然后监听用户输入,然后将所有的一行上下移动并写入新的? – Andna

+0

@安娜:取决于你在做什么,你不必写一个新的。你可以用'newpad'得到一个'pad'并改变它的位置(一个函数调用)。 – cha0site

+0

好的,谢谢,我会尝试Ncurses。 – Andna

3

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