如何获取空环境的终端类型

How to get the terminal type with empty env

我想知道是否有任何方法可以获取终端类型但获取 env("TERM").

tgetent(NULL, getenv("TERM"));

但是如果我用一个空的环境执行我的程序

env -i ./a.out

我无法获得使用 termcap 库所需的终端类型。

有没有办法找到空环境的终端类型?

您没有找到终端环境,而是设置它以便您的应用程序能够正常工作。它应该设置为与您的程序运行的终端的功能相对应。

有一些特殊情况,例如 cron,您没有终端,但出于某种原因希望能够使用 termcap(更有可能是 terminfo 库的 termcap 接口,顺便一提)。在 ncurses 中,有一些条目,例如 genericunknowndumb 是指不能用于全屏模式的终端。

今天使用的大多数(比如 2/3 或更多)终端仿真器与 DEC VT100 的兼容性水平合理,因此将 TERM 设置为 vt100 "works"。为了更好地适应,您需要知道终端的功能。例如,有些人会说将其设置为 xterm,但这可能不是一个好建议(ncurses FAQ Why not just use TERM set to "xterm"?)。