重绘终端的程序如何工作?

Bry*_*son 5 c terminal

我想编写一个生活游戏应用程序,只是为了娱乐/练习。top进程(例如)如何watch重绘屏幕,但不生成全部输出负载(这样当我向上滚动时,它只是一帧,而不是进程生成的每一帧)?

这是依赖于语言的,还是通过操作系统调用完成的?

我想用 C 语言来做,这样我就可以通过添加吃对象的“兔子”来练习内存共享。

Tho*_*hel 1

它不依赖于语言;它与终端有关(在您的情况下可能是终端仿真)。最初终端不允许这样的功能,但后来,一些特殊的“字符”具有这样的效果(清除屏幕,移动光标等)。库(例如ncurses都知道此类代码,这些代码可能会根据每个模拟终端而有所不同;另请参阅TermcapTerminfo)。

所有这些功能都依赖于一个名为 TERM 的环境变量;每个软件都能够知道模拟的是哪种终端。当然,像 ncurses 这样的库会根据它调整它们的行为。看看吧

echo $TERM
Run Code Online (Sandbox Code Playgroud)

它可能会输出类似xterm(这是事实上的标准)或linux(其他标准是vt100,有点旧,或者screen这是一个很棒的工具)。