确保程序在终端中
making sure program is in a terminal
我试图使用ansi转义码为一些必须在终端中显示的字符串添加颜色。到目前为止,我还没有掌握整个ascii转义码的内容,只是通过复制粘贴一些转义码来尝试。然后看到了这个答案,它要求验证程序是否应该检查它是否在终端中执行,或者是否在不使用转义码污染字符串的情况下继续?
Answer解释了使用一个基于*nix的函数isatty()
,我发现它位于unistd.h
中,而cpp标准并没有将其升级为cunistd
,因为我知道它最初不在c的标准中。我试着再次搜索SO,但不能很好地理解。现在我有两个问题:
- 在什么环境下(正确的词?)可以执行一个使用ascii转义码的程序,需要进行初始检查?因为我只支持cli
- 根据ISO cpp标准,处理这个问题的合适解决方案是什么?使用
unistd.h
?这种用法会局限于现代cpp实践吗
在处理与ansi/colors相关的事情之前,我还有什么需要阅读/理解的吗?
在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
}
相关文章:
- 从 GUI 文件资源管理器执行程序,并且不生成终端
- 终端命令在程序运行后自动打开图形
- 在集成终端上运行vscode lldb调试器时,如何获取程序的输出?
- 当主终端关闭时,程序终止
- 如何从终端运行用 eclipse 编写的 c++ 程序
- 如何在另一个终端中打开并稍后关闭来自c ++的另一个程序?
- 我想在终端窗口中运行我的 CLion 程序
- 试图调节我的 do-while 以停止在终端中退出程序.菜单不会根据需要循环使用当前语句
- 如何在应用程序进行大量printf时,在固定输入的终端中设置最后一行
- 在Qt小部件应用程序中显示cmd终端
- 崇高文本 3 - 在终端中编译并运行 C++ 程序(路径包含空格)
- 终端不显示程序的警告.如何在终端中看到它们
- 从C 程序传递命令到终端的问题
- 命令在终端或程序中提供不同的行为(Python和C )
- 如何在与 c++ 代码不同的终端中打开程序?
- 如何在不将其连接到终端的情况下运行'screen',以便我可以在C++ (qt) 应用程序中捕获输出?
- 如何通过终端在Macbook上运行基于GUI的程序
- macOS 差异在“访达”和“终端”中运行应用程序
- 在^sysinfo和C 终端程序
- 如何在终端程序中调整光标,使其与输出列对齐?