如何使用C ++ Ncurses修复打开终端错误

时间:2018-11-24 05:17:19

标签: c++ ncurses

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

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

2 个答案:

答案 0 :(得分:0)

initscr手册页提到了这一点:

  

未设置TERM变量

     

如果TERM变量丢失或为空,则initscr使用值 “未知” ,该值通常对应于具有通用名称的终端条目   (gn)能力。通用条目由setupterm检测(请参阅   curs_terminfo(3x)),不能用于全屏操作。其他   实现可能会以不同的方式处理缺失/空的TERM变量。

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

  

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

答案 1 :(得分:0)

在运行的应用程序中检查terminfo文件夹的路径,并在应用程序中检查类似的路径,

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

可以。

相关问题