C Linux/Unix控制台图形/控件

C Linux/Unix控制台图形/控件,c,linux,unix,console,C,Linux,Unix,Console,我想知道如何使用C创建控制台应用程序,更好地控制输入和输出。例如,文本编辑器nano如何在屏幕的特定部分显示文件内容,然后在底部保持命令列表静止。我知道您可以在Windows中使用win32 api来实现这一点,但Unix/Linux的等效功能是什么?很可能有一个界面可以控制屏幕的绘制和项目在屏幕上特定位置的放置。该api在linux系统和unix上都是标准的,有些可能是根据unix商业变体下使用的诅咒的变体定义的实现,但有些标准ncurses功能是兼容的。此外,根据手头的任务,您可能会发现一个

我想知道如何使用C创建控制台应用程序,更好地控制输入和输出。例如,文本编辑器nano如何在屏幕的特定部分显示文件内容,然后在底部保持命令列表静止。我知道您可以在Windows中使用win32 api来实现这一点,但Unix/Linux的等效功能是什么?

很可能有一个界面可以控制屏幕的绘制和项目在屏幕上特定位置的放置。该api在linux系统和unix上都是标准的,有些可能是根据unix商业变体下使用的诅咒的变体定义的实现,但有些标准ncurses功能是兼容的。

此外,根据手头的任务,您可能会发现一个用于彩色文本模式的库,基于widget的用户界面,也是一种合适的选择。有时,使用newt可以获得更好的视觉效果。

如果您只想做低级工作,可能需要使用或库


如果你想用nano和几乎所有其他交互终端应用程序的方式来做,你可能想使用ncurses。这样,您将花更少的时间实现终端控制逻辑,花更多的时间在您正在开发的实际应用程序上。

但是ncurses在Linux(Ubuntu)上使用的是什么?@Matthew:根据上面的链接,ncurses使用GNU Midnight Commander(文件管理器),YAST by Suse,和GNU屏幕,仅举几个…@Matthew:另外,ncurses与termcap(终端功能)进行通信,以确定使用哪种控制台,例如控制台的类型ASCII、VTerm,例如有多少行和多少列。。。将termcap视为中间层,底层是控制台图形,顶层是ncurses api。Matthew:ncurses是一个库,您可以在自己的应用程序中使用它来控制终端。ncurses使用的底层内容对于不同的终端类型是不同的。ncurses下面的下一级是terminfo或termcap(它可以使用IIRC)。下面是您需要发送到每种终端类型的原始字节,不同终端的命令不同,并且它们的功能也不相同(其中一些可以设置窗口的标题字符串,一些可以调整大小,一些可以滚动,一些有超过8种颜色,但您不能想当然)。如果只使用terminfo或termcap,则需要自行处理如何处理终端差异的逻辑。