stdin(3) Library Functions Manual stdin(3) NOMBRE stdin, stdout, stderr - flujos de la E/S estandar BIBLIOTECA Biblioteca Estandar C (libc, -lc) SINOPSIS #include extern FILE *stdin; extern FILE *stdout; extern FILE *stderr; DESCRIPCION 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). 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 . (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 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(3), 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. ESTANDARES C11, POSIX.1-2008. The standards also stipulate that these three streams shall be open at program startup. HISTORIAL C89, POSIX.1-2001. NOTAS 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). VEASE TAMBIEN csh(1), sh(1), open(2), fopen(3), stdio(3) TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Carlos Costa Portela y Juan Piernas Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . Paginas de manual de Linux 6.06 31 Octubre 2023 stdin(3)