gpt4 book ai didi

c - 在可移植 C 中将标准输出移出控制台

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:59:43 24 4
gpt4 key购买 nike

目标应用程序可以在“管道”模式下使用,这意味着它接受来自标准输入的输入,并可以输出到标准输出。

但是,用户始终存在犯错的风险,将输出定向到 stdout,而实际上并未将 stdout 定向到“某物”(文件或消费者程序)。结果,控制台屏幕变成乱码显示二进制数据(因为默认情况下,stdout 输出到屏幕)。

底线:我想避免二进制输出自动显示到控制台中。它必须在可移植的 C 中完成,并且不依赖于外部脚本。

一些可能的方法:

1) 是否有可能检测到 stdout 将要控制台,以便将其重定向到其他地方? (包括/dev/nul)。请注意,代码必须是可移植的,并且适用于 Windows 和 Linux(以及 BSD、OpenSolaris 等)

2) 备选方案:是否可以默认将标准输出重定向到“其他地方”(例如/dev/nul),而不会真正损害程序的正确使用,将标准输出重定向到有效的消费者进程?

最佳答案

在 POSIX(例如 Linux 和 OSX)系统上,您可以使用 isatty检查 stdout 是否转到控制台或其他地方的函数:

if (isatty(STDOUT_FILENO))
printf("Going to a console\n");
else
printf("Standard output is redirected or piped\n");

不幸的是,没有可移植的方法可以在 POSIX 系统和 Windows 上运行。

关于c - 在可移植 C 中将标准输出移出控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17817828/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com