asz*_*waz 0 c stdout ansi-escape jq
在不支持ANSI转义码的终端中,输出\033[0m这样的颜色控制码不仅没有任何效果,还会干扰终端。
我知道一个json格式化工具叫jq,它判断终端是否可以使用ANSI转义码。
我想知道,如何通过C语言实现这个功能?
在 Linux 和可能的POSIX系统上,您可以将isatty(3)与STDOUT_FILENO. 另请参见stdio(3)和fileno(3)。
所以你的代码是
if (isatty(STDOUT_FILENO)) {
// standard output is a tty
...
}
Run Code Online (Sandbox Code Playgroud)
你必须打赌,到 2021 年,大多数终端模拟器都会支持ANSI TTY 转义。
顺便说一下,jq是一个开源软件工具。您可以下载并研究其源代码。
请注意,C 编程语言标准(阅读n1570或更好)不了解 ttys。阅读TTY 揭秘网页。
| 归档时间: |
|
| 查看次数: |
593 次 |
| 最近记录: |