如何使用API​​控制C中gnome终端的帧大小,缓冲区大小,游标位置和GDI功能?

时间:2014-01-28 13:48:01

标签: c api ubuntu terminal gdi

我在Windows中使用Win32 Console API编程,并且有一些功能可以控制控制台:

Ubuntu中是否有任何等效功能(不使用ncurses)?的API?

<> BTW,Ubuntu的开发者文档网站在哪里,如MSDN?

1 个答案:

答案 0 :(得分:1)

您需要注意以下几点:

没有Ncurses,你真的不需要很多选择(嗯,你做 - excape代码,但这就是NCurses所做的)。值得理解为什么你找不到这个功能:Gnome-Terminal是一个终端模拟器,而不是像cmd.exe那样的“控制台”。没有用于控制终端的API,因为它只是模拟一个正确的串行终端并从你的程序stdout中读取字符,并将字符发送到stdin(换句话说,你的运行程序不知道 type 终端它正在运行,或者即使它正在输出或从终端输入。它可能是Gnome终端,也可能是xfce4-terminal,rxvt,xterm,文件等......这在Windows中是真的但不是同样,因为cmd.exe基本上是唯一的终端程序,你可以通过更直接的方式控制终端。)所以简单的答案就是你不能控制终端相关的东西,比如缓冲区大小。你可以控制光标位置并在屏幕上的specefic点上设置字符,但是你必须通过excape代码来实现它们并且它们变得丑陋(Ncurses是一个很棒的库,因为它从中提取了所有这些您)。你有没有理由不想使用Ncurses?如果你不想使用它,我会重新考虑你在做什么。如果您正在寻找跨平台,那么pdcurses是您可以使用的Windows的curses实现。

另外值得注意的是,你继续引用Ubuntu并询问他们的文档 - 你应该记住,Gnome和Gnome-Terminal是与Ubuntu分开的项目(这或多或少只是一个不同程序的集合,有些像Unity这样的内部程序。在Ubuntu的网站上寻找Gnome-Terminal信息就像在微软的网站上查找Gnome-Terminal信息一样,你只是找不到它,因为它是一个单独的项目,它恰好默认安装在Ubuntu上。如果您查看Gnome的网站,您可能会找到更好的信息。但是,他们仍然没有用于控制终端特殊功能的API,例如缓冲区,因为它们支持Ncurses,而你最好不要将自己绑定到一个特殊的终端或操作系统。请记住,并非所有Ubuntu用户都使用Gnome-Terminal,并非所有Gnome-Terminal用户都在运行Ubuntu。 AFAIK他们没有任何类型的开发者网站,如MSDN,但他们也没有太多可以放在那里。如果您正在为Ubuntu开发,那么您可能会针对其他技术,如GTK,Qt,OpenGL等...哪些文档(并且更加平台无关,然后只是'Ubuntu-specefic' - 如果你有机会为Ubuntu编写程序,它将在大多数Linux桌面平台上运行,而不仅仅是Ubuntu)