“top”程序用什么技术重新在屏幕上显示数据?

4

你可能知道,当你在终端运行 "top" 命令时,它会显示计算机上最繁忙的进程,并定期更新值而不添加任何单行。

这种技术叫做什么,它允许改变 CLI 程序打印的字符串?


如果您不想使用curses,则几乎总是可以使用ANSI转义码("\033[H\033[2J"来清除终端屏幕并将光标移动到原点)。最坏的情况是,如果终端不支持它,则会在其上获得七个垃圾字节。实际上,几乎所有当前的终端都支持至少基本的ANSI转义。在Linux中,isatty(STDIN_FILENO)返回1,如果标准输入是终端,则通常正常的ANSI转义序列有效。 - Nominal Animal
2个回答

3

一种方法是获取终端窗口的宽度/高度,然后每次清除/打印整个屏幕。另一种方法是使用VT100转义码重新定位游标并覆盖该位置上的内容。第三种方法是使用像ncurses这样的库。


1
请注意,第三种方法是第二种方法的子集 :) - Michael Krelin - hacker

2

终端接受一些控制序列以进行屏幕定位等操作。请查看 curses / ncurses 库。此外,如果您只想修改一行,可以仅使用\r并再次打印该行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接