Provided by: manpages-es_1.55-10_all bug

NAME

     stdin, stdout, stderr -- flujos de la E/S estandar

SYNOPSIS

     #include <stdio.h>
     extern FILE *stdin;
     extern FILE *stdout;
     extern FILE *stderr;

DESCRIPCI'ON

     Bajo condiciones normales cualquier programa Unix tiene tres flujos de
     E/S abiertos cuando arranca: uno para la entrada, otro para la salida y
     otro para imprimir los diagnosticos o mensajes de error. Estos flujos
     estan tipicamente ligados al terminal de usuario (ver tty(4)) pero
     podrian referirse a ficheros o a otros dispositivos, segun lo que decida
     el proceso padre. (Ver tambien la seccion "Redireccion" de sh(1) .)

     El flujo de entrada se conoce como "entrada estandar"; el flujo de salida
     como "salida estandar"; y el flujo de error como "error estandar". Estos
     terminos se abrevian para formar los simbolos utilizados para referirse a
     esos ficheros, esto es, stdin, stdout y stderr.

     Cada uno de estos simbolos es una macro de stdio(3) del tipo "puntero a
     FILE" y pueden ser utilizados por funciones como fprintf(3) o fread(3).

     Ya que los FILEs son un envoltorio con buffer sobre los descriptores de
     fichero de Unix, los mismos ficheros subyacentes pueden ser accedidos
     tambien utilizando el interface crudo (raw) de ficheros de Unix, es
     decir, las funciones como read(2) y lseek(2).  Los descriptores de
     fichero asociados con los flujos stdin, stdout y stderr son 0, 1 y 2,
     respectivamente. Los simbolos del preprocesador STDIN_FILENO,
     STDOUT_FILENO y STDERR_FILENO son definidos con esos valores en
     <unistd.h>.

     Es necesario tener en cuenta que la mezcla de FILEs y descriptores de
     fichero crudos puede producir resultados inesperados y se deberia evitar.
     (Para los masoquistas: POSIX.1, section 8.2.3, describe en detalle como
     se supone que funciona esta interaccion).  Una regla general es que los
     descriptores de fichero son gestionados por el nucleo, mientras que stdio
     es una simple biblioteca. Esto significa, por ejemplo, que tras un exec,
     el hijo hereda todos los descriptores de ficheros abiertos, pero los
     flujos antiguos se hacen inaccesibles.

     Ya que los simbolos stdin, stdout y stderr son especificados como macros,
     las asignaciones a ellos no son portables.  Se puede hacer que los flujos
     estandares referencien a otros ficheros con ayuda de la funcion de
     biblioteca freopen(3), introducida especialmente para hacer posible
     reasignar stdin, stdout y stderr.  Los flujos estandares se cierran
     llamando a exit(3) y por la terminacion normal del programa.

V'EASE TAMBI'EN

     sh(1), csh(1), open(2), fopen(3), stdio(3)

CONSIDERACIONES

     El flujo stderr no utiliza buffers. El flujo stdout tiene un buffer de
     lineas cuando apunta a un terminar. Las lineas no aparecen hasta que se
     llama a fflush(3) o a exit(3) , o se imprime una nueva linea ("\n"). Esto
     puede producir resultados inesperados, especialmente en depuracion.  El
     modo "buffer" de los flujos estandares (o de cualquier otro flujo) se
     puede cambiar con llamadas a setbuf(3) o setvbuf(3) Es necesario tener en
     cuenta que en caso de que stdin este asociado con un terminal, podria
     haber tambien entrada via buffer en el driver del terminal, sin relacion
     alguna con el buffer de stdio.  (De hecho, las entradas normales de
     terminal utilizan un buffer de lineas en el nucleo).  Esta gestion de
     entradas del nucleo puede ser modificada utilizando llamadas como
     tcsetattr(3); ver tambien stty(1), y termios(3).

CONFORME A

     Las macros stdin, stdout, y stderr cumplen el ANSI X3.159-1989
     (``ANSI C89''), y este estandar tambien estipula que esos tres flujos se
     deberian abrir al comienzo del programa.