table of contents
SETBUF(3) | Manual del Programador de Linux | SETBUF(3) |
NOMBRE¶
setbuf, setbuffer, setlinebuf, setvbuf - operaciones sobre búferes de flujos
SINOPSIS¶
#include <stdio.h>
void setbuf(FILE *flujo, char *buf);
void setbuffer(FILE *flujo, char *buf, size_ttam);
void setlinebuf(FILE *flujo);
int setvbuf(FILE *flujo, char *buf, int modo , size_t tam);
setbuffer(), setlinebuf():
Since glibc 2.19:
_DEFAULT_SOURCE
Glibc 2.19 and earlier:
_BSD_SOURCE
DESCRIPCIÓN¶
Los tres tipos disponibles de estrategias de asignación de búferes son sin búfer, con búfer de bloque, y con búfer de línea. Cuando un flujo de salida está sin búfer, la información aparece en el fichero de destino o en la terminal tan pronto como se escribe; cuando está con búfer de bloque se guardan y escriben muchos caracteres como un bloque; cuando está con búfer de línea los caracteres se van guardando hasta que se da un salto de línea o si la entrada se lee de cualquier flujo asociado a un dispositivo de terminal (normalmente la entrada estándar stdin). Se puede emplear la función fflush(3) para forzar la escritura del bloque más pronto de la cuenta. (Vea fclose(3).)
Normally all files are block buffered. If a stream refers to a terminal (as stdout normally does), it is line buffered. The standard error stream stderr is always unbuffered by default.
The setvbuf() function may be used on any open stream to change its buffer. The mode argument must be one of the following three macros:
- _IONBF
- sin búfer
- _IOLBF
- búfer de línea
- _IOFBF
- búfer completo
Salvo para ficheros sin búfer, el argumento buf debería apuntar a un búfer de al menos tam bytes de grande; este búfer se utilizará en lugar del actual. Si el argumento buf es NULL, sólo el modo se ve afectado; se obtendrá un nuevo búfer en la siguiente operación de lectura o escritura. La función setvbuf() puede ser usada solamente después de abrir un flujo y antes de que ninguna otra operación se haya realizado sobre él.
Las otras tres funciones son, en efecto, simplemente otras formas simplificadas de llamar a setvbuf(). La función setbuf() es exactamente equivalente a la llamada
setvbuf(flujo, buf, buf ? _IOFBF : _IONBF, BUFSIZ);
La función setbuffer() es lo mismo, excepto en que el tamaño del búfer se deja a la discreción del usuario, en vez de estar determinado por el valor por omisión BUFSIZ. La función setlinebuf() es exactamente equivalente a la llamada:
setvbuf(stream, NULL, _IOLBF, 0);
VALOR DEVUELTO¶
The function setvbuf() returns 0 on success. It returns nonzero on failure (mode is invalid or the request cannot be honored). It may set errno on failure.
The other functions do not return a value.
ATRIBUTOS¶
Para obtener una explicación de los términos usados en esta sección, véase attributes(7).
Interfaz | Atributo | Valor |
setbuf(), setbuffer(), setlinebuf(), setvbuf() | Seguridad del hilo | Multi-hilo seguro |
CONFORME A¶
The setbuf() and setvbuf() functions conform to C89 and C99.
ERRORES¶
You must make sure that the space that buf points to still exists by the time stream is closed, which also happens at program termination. For example, the following is invalid:
#include <stdio.h> int main(void) {
auto char buf[BUFSIZ];
setbuf(stdin, buf);
printf("¡Hola a todos!\n");
return 0; /* Se destruye buf, se cierra stdin */ }
VÉASE TAMBIÉN¶
stdbuf(1), fclose(3), fflush(3), fopen(3), fread(3), malloc(3), printf(3), puts(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 Gerardo Aburruzaga García <gerardo.aburruzaga@uca.es>, Juan Piernas <piernas@ditec.um.es> y Miguel Pérez Ibars <mpi79470@alu.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.
6 Marzo 2019 | Linux |