【问题标题】:How do I fix opening terminal error with c++ ncurses如何使用 c++ ncurses 修复打开终端错误
【发布时间】:2018-11-24 05:17:18
【问题描述】:

我在 MacOS 上使用 CLion 2018.2.6。我正在尝试使用 ncurses,但收到错误“打开终端时出错:未知”。我不知道如何解决这个问题。任何帮助表示赞赏。代码如下。

#include <iostream> 
#include <ncurses.h>
using namespace std;
int main(){
     initscr();
     clear();
     printw("Seems legit!");
     refresh();
     getch();
     endwin();
}

【问题讨论】:

标签: c++ ncurses


【解决方案1】:

initscr 手册页提到了这一点:

取消设置 TERM 变量

如果 TERM 变量缺失或为空,initscr 使用值 "unknown",该值通常对应于具有泛型的终端条目 (gn) 能力。 setupterm 检测到通用条目(请参阅 curs_terminfo(3x)) 并且不能用于全屏操作。其他 实现可能会以不同的方式处理缺失/空的 TERM 变量。

此外,根据您的系统配置方式,ncurses 甚至可能找不到终端数据库,例如,如果它安装在与编译默认位置不同的位置。与 TERM 一样,可以使用 TERMINFOTERMINFO_DIRS 环境来修复。作为一个额外的复杂因素,MacOS 默认使用不区分大小写的文件系统,而 ncurses 为此使用不同的目录组织。 term(5) 手册页提到:

少数终端描述使用大写字符 他们的名字。如果底层文件系统忽略了差异 在大写和小写之间,ncurses 表示用作目录中间层的终端名称的“第一个字符” (两个字符)十六进制形式的树。

【讨论】:

    【解决方案2】:

    像这样检查应用程序运行系统中terminfo文件夹的路径和你的应用程序中的相同路径,

    例如:- setenv("TERMINFO","/usr/share/terminfo", 1);

    它工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 2023-02-06
      • 2011-01-22
      相关资源
      最近更新 更多