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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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 ⟨⟩.