Hemos comentado que en muchos sistemas operativos se puede usar el símbolo “>” para redirigir hacia “otro sitio” (la impresora o un fichero de texto, por ejemplo) la información que iba destinada originalmente a la pantalla. Esto funciona, entre otros, en Windows, MsDos y toda la familia de sistemas operativos Unix (incluido Linux).
Pero en el caso de Linux (y los Unix en general) podemos redirigir además los mensajes de error hacia otro sitio distinto del resto de mensajes (que iban destinados a pantalla). Esto se consigue con el símbolo “2>” :
calculaResultados > valores.txt 2> errores.txt
Esta orden pone en marcha un programa llamado “calculaResultados”, guarda en el fichero “valores.txt” los mensajes que normalmente aparecerían en pantalla, y guarda en el fichero “errores.txt” los mensajes de error.
Esta política de separar los mensajes de información y los mensajes de error es fácil de llevar a nuestros programas. Basta con que los mensajes de error no los mandemos a pantalla con órdenes como “printf”, sino que los mandemos a un fichero especial llamado “stderr” (salida estándar de errores).
Por ejemplo, a la hora de intentar abrir un fichero podríamos hacer:
fichero = fopen("ejemplo.txt", "rt");
if (fichero == NULL)
fprintf(stderr, "Fichero no encontrado!\n");
else
printf("Accediendo al fichero...\n");
Si el usuario de nuestro programa no usa “2>”, los mensajes de error le aparecerían en pantalla junto con cualquier otro mensaje, pero si se trata de un usuario avanzado, le estamos dando la posibilidad de analizar los errores cómodamente.