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

时间:2016-11-04 17:47:52

标签: c terminal

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

这种语言是依赖的,还是通过OS调用完成的?

我想用C语言做,所以我可以通过添加吃掉对象的'兔子'来练习记忆共享。

2 个答案:

答案 0 :(得分:1)

它不依赖于语言;它与终端有关(在您的情况下可能是终端仿真)。最初终端不允许这样的功能,但后来,一些特殊的#34;字符"有这样的效果(清除屏幕,移动光标等)。图书馆(例如ncurses)知道此类代码,这些代码可能因每个模拟终端而异;还可以查看TermcapTerminfo)。

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

echo $TERM

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

答案 1 :(得分:1)

要清除C中的终端,您可以这样做:

printf("\033[0;0H\033[2J");

将此分开:

  • \033 ESC 键的ascii转义序列
  • [0;0H将光标位置设置在屏幕的左上角
  • [2J清除屏幕上的所有内容

\033也可以在某些系统上写为\x1b\e。作为旁注,您可以使用Java和其他语言执行此操作,因此它不是特定于C的。