Tom, gracias por la entrada.
hice algunos experimentos y encontró que esto funciona para mí ..
fpost_t pos ;
fgetpos (stdout, & pos) ;
Cuando la salida de una aplicación está siendo redirigido a un archivo, fgetpos() conjuntos 'pos' a cero. Tiene sentido ya que su stderr recién abierto para ti. EDITAR: En realidad, el valor devuelto puede ser un entero positivo si el texto ya ha sido redirigido al registro/archivo. Entonces en su código tendría algo como "if (pos> = 0) bfRedirected = TRUE;"
Cuando la salida de una aplicación no se redirecciona, va al dispositivo de consola, no a un archivo, por lo que fgetpos() establecerá 'pos' en -1.
AFAIK, esto no es posible. Así que leeré esto para ver si estoy equivocado ... –
No hay forma de saberlo. He visto programas que permiten que una opción de línea de comando realice diferentes funciones, que a menudo solo se activan cuando se redirige la salida. – Hogan
No es 100% seguro en Windows, pero en Linux hay muchos programas que se comportan de manera diferente si se canalizan o no ... el ejemplo más común es "ls". – fortran