2012-01-18 71 views
5

好吧,所以我只是想知道如何控制台应用程序如top(1)为Linux覆盖多行。我想知道如何为C++或C做到这一点。我知道如何通过放置一个\ r来覆盖1行,但我想知道如何为多行执行操作,就像在顶部或者甚至是可能的那样。控制台覆盖像顶部

+2

它是平台相关的。你在哪个平台上? – Jon 2012-01-18 02:53:27

+0

Linux可能是我要去做的事 – csteifel 2012-01-18 02:57:45

回答

3

它们使用终端转义序列在屏幕上移动光标。有些甚至使用直接帧缓冲访问,将屏幕视为可以直接索引的字符数组。

curses(或ncurses)库是一个很好的抽象层。

+0

只是一个说明,但诅咒在Windows上并不存在:[ncurses是否适用于Windows](http://stackoverflow.com/q/138153/) 16487) – 2012-01-18 02:57:13

+0

@ C.Ross:该问题询问有关替换支持curses API的终端仿真器。 'curses'肯定可用于控制台模式应用程序。 – 2012-01-18 03:00:45

+0

pdcurses实际上非常实用,我没有将使用基本ASCII字符的ncurses应用程序移植到Windows上的pdcurses时遇到任何问题。如果你使用ncursesw,兼容UTF-8的ncurses化身,你可能会遇到更多的麻烦。 – 2012-01-18 03:28:47

2

这可能不会直接解决这个问题,但这种事情依赖于终端,通常使用curses实现(ncurses是最广泛使用的)。