我偶然发现了这个 C 代码。它使用 freopen 以二进制模式重新打开标准输入:
if (!isatty(STDIN_FILENO))
freopen(NULL, "rb", stdin);
我不明白isatty测试从何而来。这是否意味着重新打开终端没有意义?
省略 isatty 测试会有什么问题,离开
freopen(NULL, "rb", stdin);
该isatty()
函数是POSIX 标准的。
我想这样做是有意义的,如果您想确保以二进制模式处理正在读取的文件(我认为是通过 shell 输入重定向)。