Provided by: manpages-es-dev_4.13-4_all bug

NOMBRE

       stdin, stdout, stderr - flujos de la E/S estándar

SINOPSIS

       #include <stdio.h>

       extern FILE *stdin;
       extern FILE *stdout;
       extern FILE *stderr;

DESCRIPCIÓN

       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 diagnósticos o  mensajes  de  error.  Estos
       flujos están típicamente ligados al terminal de usuario (ver tty(4))  pero podrían referirse a ficheros o
       a  otros  dispositivos,  según  lo  que decida el proceso padre. (Ver también la sección "Redirección" de
       sh(1).)

       El flujo de entrada se conoce como "entrada estándar"; el flujo de salida como "salida  estándar";  y  el
       flujo de error como "error estándar". Estos términos se abrevian para formar los símbolos utilizados para
       referirse a esos ficheros, esto es, stdin, stdout y stderr.

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

       Since  FILEs  are a buffering wrapper around UNIX file descriptors, the same underlying files may also be
       accessed using the raw UNIX file interface, that is, the functions like read(2)  and lseek(2).

       On program startup, the integer file descriptors associated with the streams stdin,  stdout,  and  stderr
       are  0,  1, and 2, respectively.  The preprocessor symbols STDIN_FILENO, STDOUT_FILENO, and STDERR_FILENO
       are defined with these values in <unistd.h>.  (Applying freopen(3)  to one of these  streams  can  change
       the file descriptor number associated with the stream.)

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

       Ya que los símbolos stdin, stdout y stderr son especificados como macros, las asignaciones a ellos no son
       portables.  Se puede hacer que los flujos estándares referencien a otros ficheros con ayuda de la función
       de  biblioteca freopen(3), introducida especialmente para hacer posible reasignar stdin, stdout y stderr.
       Los flujos estándares se cierran llamando a exit(3) y por la terminación normal del programa.

CONFORME A

       Las macros stdin, stdout y stderr cumplen el C89, y este estándar también estipula que esos  tres  flujos
       se deberían abrir al comienzo del programa.

NOTAS

       El  flujo  stderr  no  utiliza  búffers.  El  flujo  stdout  tiene un búffer de líneas cuando apunta a un
       terminar. Las líneas no aparecen hasta que se llama a fflush(3) o a exit(3), o se imprime una nueva línea
       ("\n"). Esto puede producir resultados inesperados, especialmente en depuración.  El modo "buffer" de los
       flujos estándares (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 esté asociado con un terminal, podría haber también
       entrada vía buffer en el driver del terminal, sin relación alguna con el búffer de stdio.  (De hecho, las
       entradas normales de terminal utilizan un búffer de líneas en el núcleo).  Esta gestión de  entradas  del
       núcleo puede ser modificada utilizando llamadas como tcsetattr(3); ver también stty(1) y termios(3).

VÉASE TAMBIÉN

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

COLOFÓN

       Esta página es parte de la versión 5.10 del proyecto Linux man-pages. Puede encontrar una descripción del
       proyecto,   información   sobre   cómo   informar   errores  y  la  última  versión  de  esta  página  en
       https://www.kernel.org/doc/man-pages/.

TRADUCCIÓN

       La  traducción  al  español  de  esta  página  del  manual  fue   creada   por   Carlos   Costa   Portela
       <c.c.portela@ieee.org> y Juan Piernas <piernas@ditec.um.es>

       Esta  traducción  es  documentación  libre;  lea  la GNU General Public License Version 3 o posterior con
       respecto a las condiciones de copyright.  No existe NINGUNA RESPONSABILIDAD.

       Si encuentra algún error en la traducción de esta página  del  manual,  envíe  un  correo  electrónico  a
       debian-l10n-spanish@lists.debian.org.

Linux                                          15 Septiembre 2017                                       STDIN(3)