Redirigir mensajes de error desde el símbolo del sistema: STDERR/STDOUT

En este artículo se describe la redirección de mensajes de error desde el símbolo del sistema.

Versión original del producto: Visual C++
Número de KB original: 110930

Resumen

Al redirigir la salida desde una aplicación con el símbolo, los > mensajes de error siguen imprimiendo en la pantalla. Esto se debe a que los mensajes de error a menudo se envían al flujo de error estándar en lugar de a la secuencia de salida estándar.

La salida de una aplicación o comando de consola (símbolo del sistema) a menudo se envía a dos secuencias independientes. La salida normal se envía a Salida estándar (STDOUT) y los mensajes de error se envían al error estándar (STDERR). Al redirigir la salida de la consola con el > símbolo, solo se redirige STDOUT. Para redirigir STDERR, debe especificar 2> para el símbolo de redirección. Esto selecciona el segundo flujo de salida que es STDERR.

Ejemplo

El comando dir file.xxx (donde no existe file.xxx) mostrará la salida siguiente:

El volumen de la unidad F es el número de serie del volumen de la caña de caramelo es 34EC-0876
Archivo no encontrado

Si redirige la salida al dispositivo NUL mediante dir file.xxx > nul, seguirá viendo el mensaje de error:

Archivo no encontrado

Para redirigir el mensaje de error a NUL, use el siguiente comando:

dir file.xxx 2> nul

O bien, puede redirigir la salida a un lugar y los errores a otro.

dir file.xxx > output.msg 2> output.err

Puede imprimir los errores y la salida estándar en un único archivo mediante el &1 comando para redirigir la salida de STDERR a STDOUT y, a continuación, enviar la salida de STDOUT a un archivo:

dir file.xxx 1> output.msg 2>&1