如何修复使用 c++ ncurses 打开终端错误

问题描述 投票:0回答:2

我在 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 terminfo
2个回答
1
投票

initscr
手册页提到了这一点:

取消设置术语变量

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

此外,根据系统的配置方式,ncurses 甚至可能找不到终端数据库,例如,如果它安装在与编译的默认位置不同的位置。与 TERM 一样,可以使用 TERMINFOTERMINFO_DIRS 环境来修复该问题。另一个复杂之处是,MacOS 默认情况下使用不区分大小写的文件系统,而 ncurses 为此使用不同的目录组织。

term(5)
手册页提到:

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


0
投票

检查应用程序运行系统中terminfo文件夹的路径以及您的应用程序中的相同路径,

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

它正在工作。

© www.soinside.com 2019 - 2024. All rights reserved.