【发布时间】:2015-09-11 06:15:55
【问题描述】:
我们都知道重定向标准输出有两种方式。
首先,我们可以使用 freopen_s 将 stdout 和 stderr 重定向到一个文件。
其次,我们可以像这样调用可执行文件时重定向stdout和stderr:xxx.exe > log.txt 2>&1。
所以我的问题是我怎么知道 stdout 和 stderr 被重定向到哪里。
在这种情况下,我在程序中遇到了这个问题: 如果用户通过第二种方式重定向标准输出,我应该将其重定向到“CON”,并将一些日志打印到控制台。 如果用户没有重定向它,我不应该将这些日志打印到控制台。
这是因为如果用户没有重定向,这些日志已经打印到控制台了。
【问题讨论】:
-
这看起来是一个尴尬的要求。我会完全避免它。
-
这似乎有点落后。如果用户故意重定向你的输出,那么打印到控制台可能不是用户想要的?
-
一般来说,这是不可能的。此外,这已经被问过了,可能会根据操作系统获得有关输出流的一些信息
-
操作系统特定的。如果您在 POSIX 上,您正在寻找的关键字是“
isatty”。