确保程序在终端中

时间:2016-01-01 17:38:45

标签: c++ linux terminal

我试图为一些必须使用ansi转义码在终端中显示的字符串添加颜色。到目前为止,我还没有掌握整个ascii转义代码的事情,只是通过复制粘贴一些转义码来尝试。然后看到这个answer要求验证程序应该检查它是在终端中执行还是继续而不用使用转义码污染字符串?

答案解释使用基于* nix的函数isatty(),我发现unistd.h位于cunistd,而cpp标准基于我的理解而未将其提升为unistd.h我没有在第一名的标准。我试图再次搜索SO,但无法理解。现在我有两个问题:

  • 在什么环境(正确的单词?)中,程序 - 使用ascii转义码,是否可以执行它需要初步检查?因为我只为cli建造。
  • 根据ISO cpp标准处理此问题的适当解决方案是什么?使用autocomplete_themes?这种用法会限制在现代cpp实践吗?

在处理ansi / colors相关的事情之前,还有什么我应该阅读/理解的吗?

1 个答案:

答案 0 :(得分:4)

在POSIX系统(如Linux或OSX)上,isatty功能确实是确定您是否输出到终端的正确功能。

将其用作

if (isatty(STDOUT_FILENO))
{
    // Output using VT100 control codes
}
else
{
    // Output is not a TTY, could be a pipe or redirected to a file
    // Use normal output without control codes
}