最简单的检查方法可能是:
isatty(fileno(STDOUT))
如果将
1您的标准输出发送到任何类型的终端,将返回此值。实际上,任何终端都将支持或忽略VT100颜色代码。除非您希望将其输出到某些非常不寻常的硬件终端,否则无需检查terminfo。(其中大多数都已经几十年了。)
要输出颜色,请使用(扩展的)SGR序列:
"x1b[%dm"
其中
%d是常用颜色的以下值之一:
0: reset colors/style1: bold4: underline30 - 37: black, red, green, yellow, blue, magenta, cyan, and white text40 - 47: black, red, green, yellow, blue, magenta, cyan, and white background
还有更多的价值,但是这些是最广泛支持的价值。同样,对于这些控制代码来说,检查terminfo基本上是不必要的,因为值得其支持的每个软件终端都将支持(或忽略)它们。
如果需要一次更改多个属性,则可以一次指定所有属性,以分号分隔。例如,以下序列将在绿色背景上用深红色的洋红色文字吸引您的眼球:
"x1b[1;35;42m"



