如何检测何时重定向输出?

log*_*out 9 winapi redirect console-application

我有一个用C编写的Win32应用程序,可以通过printf()将其控制台输出重定向到日志文件.

如果我有我的应用程序会很好.检测是否已启动或不启用重定向'>'.

有任何想法吗?

log*_*out 5

汤姆,谢谢你的意见.

我做了一些实验,发现这对我有用..

fpost_t pos ;

fgetpos (stdout, & pos) ;
Run Code Online (Sandbox Code Playgroud)

当应用程序的输出被重定向到文件时,fgetpos()将'pos'设置为零.它是新的开放的stderr为你有意义.编辑:实际上,如果文本已被重定向到日志/文件,则返回的值可能是正整数.所以在你的代码中,你会有类似"if(pos> = 0)bfRedirected = TRUE"的内容.

当应用程序的输出未被重定向时 - 它将转到控制台设备 - 而不是文件,因此fgetpos()会将'pos'设置为-1.