目标应用程序可以在“管道”模式下使用,这意味着它接受来自标准输入的输入,并且可以输出到标准输出。
但是,总是存在用户犯错误的风险,将输出定向到标准输出,而实际上没有将标准输出定向到“某物”(文件或消费者程序)。因此,控制台屏幕会显示二进制数据(因为默认情况下,标准输出会输出到屏幕)。
底线:我想避免二进制输出自动显示到控制台中。它必须在可移植的 C中完成,并且不依赖于外部脚本。
一些潜在的方法:
1)是否有可能检测到标准输出将进入控制台,以便将其重定向到其他地方?(包括 /dev/nul)。请注意,代码必须是可移植的,并且适用于 Windows 和 Linux(以及 BSD、OpenSolaris 等)
2)替代方案:是否可以默认将标准输出重定向到“其他地方”(例如/dev/nul),而不会真正损害程序的正确使用,将标准输出重定向到有效的消费者进程?