c - 如何用C语言API控制gnome终端的帧大小、缓冲区大小、光标位置和GDI功能?

标签 c api ubuntu terminal gdi

我在 Windows 中使用 Win32 Console API 进行编程,还有一些可以控制控制台的功能:

Ubuntu 中是否有等效的函数(不使用 ncurses )? API?

顺便问一下,Ubuntu 的开发者文档网站(如 MSDN)在哪里?

最佳答案

您需要注意以下几点:

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

还值得注意的是,您不断引用 Ubuntu 并索要他们的文档 - 您应该记住,Gnome 和 Gnome-Terminal 是与 Ubuntu 不同的项目(或多或少只是不同程序的集合,其中包含一些程序)内部程序,如 Unity)。在 Ubuntu 网站上查找 Gnome-Terminal 信息就像在 Microsoft 网站上查找 Gnome-Terminal 信息一样,您只是找不到它,因为它是一个单独的项目,它只是碰巧默认安装在 Ubuntu 上。如果您访问 Gnome 网站,您可能会找到更好的信息。但是,它们仍然没有用于控制特定于终端的东西(例如缓冲区)的 API,因为它们支持 Ncurses,而且您最好不要将自己绑定(bind)到特定的终端或操作系统。请记住,并非所有 Ubuntu 用户都使用 Gnome-Terminal,也并非所有 Gnome-Terminal 用户都运行 Ubuntu。 AFAIK 他们没有像 MSDN 这样的任何类型的开发者网站,但他们也没有太多可以放在那里的东西。如果您正在为 Ubuntu 进行开发,那么您可能会瞄准其他技术,例如 GTK、Qt、OpenGL 等……这些技术确实有文档(而且与平台无关,而只是“特定于 Ubuntu”——有可能,如果您为 Ubuntu 编写一个程序,它可以在大多数 Linux 桌面平台上运行,而不仅仅是 Ubuntu)

关于c - 如何用C语言API控制gnome终端的帧大小、缓冲区大小、光标位置和GDI功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21407332/

相关文章:

c - Malloc双指针

c++ - strtok() 使用安全吗

ruby-on-rails - RESTful API 最佳实践,更新与自定义操作

php - 从访问 token 获取 Facebook 用户(PHP SDK 3.0.1)

c - 如何对GCC的编译信息进行分页?

C - 无需计算机的数据类型转换

python - blender API : rendering a frame to memory

bash - 国际化 Bash 脚本

ruby - 在 ubuntu 14.04 上运行 jekyll 时出错

database - PostgreSQL - fatal error : Ident authentication failed for user "myuser"