STDIO_EXT(3)

NOMBRE
__fbufsize, __flbf, __fpending, __fpurge, __freadable, __freading, __fsetlocking, __fwritable, __fwriting, _flushlbf - interfaces para la estructura FILE de stdio

SINOPSIS
#include <stdio.h>
#include <stdio_ext.h>

size_t __fbufsize(FILE *stream);
size_t __fpending(FILE *stream);
int __flbf(FILE *stream);
int __freadable(FILE *stream);
int __fwritable(FILE *stream);
int __freading(FILE *stream);
int __fwriting(FILE *stream);
int __fsetlocking(FILE *stream, int type);
void _flushlbf(void);
void __fpurge(FILE *stream);

DESCRIPCIÓN
Solaris introdujo rutinas para permitir el acceso portable a los detalles internos de la estructura FILE, y glibc también las implementa.

La función __fbufsize() devuelve el tamaño del buffer usado actualmente por el flujo dado.

La función __fpending() devuelve el número de bytes en el buffer de salida. Para flujos orientados a caracteres anchos la unidad es el carácter ancho. Esta función no está definida sobre buffers en modo lectura, o abiertos como solo-lectura.

La función __flbf() devuelve un valor distinto de cero si el flujo usa buffer de línea, y cero en otro caso.

La función __freadable() devuelve un valor distinto de cero si el flujo permite lectura, y cero en otro caso.

La función __fwritable() devuelve un valor distinto de cero si el flujo permite escritura, y cero en caso contrario.

La función __freading() devuelve un valor distinto de cero si el flujo es de solo-lectura, o si la última operación sobre el flujo fue una operación de lectura, y cero en otro caso.

La función __fwriting() devuelve un valor distinto de cero si el flujo es de solo-lectura (o solo-añadidura), o si la última operación sobre el flujo fue una operación de escritura, y cero en otro caso.

La función __fsetlocking() puede utilizarse para seleccionar el tipo deseado de bloqueo sobre el flujo. Devuelve el tipo de bloqueo actual. El parámetro type puede tomar los siguientes tres valores:

FSETLOCKING_INTERNAL
    Realiza bloqueo implícito en cada operación sobre el flujo dado (excepto para las que se especifican en *_unlocked). Éste es el valor por defecto.

FSETLOCKING_BYCALLER
    El invocador se preocupará del bloqueo (posiblemente usando flockfile(3) en el caso de que haya más de un hilo), y las rutinas de stdio no realizarán bloqueo hasta que el estado sea restablecido a FSETLOCKING_INTERNAL.

FSETLOCKING_QUERY
    No cambia el tipo de bloqueo. (Sólo lo devuelve.)

La función _flushlbf() vacía todos los flujos con buffer de línea. (Presumiblemente para forzar la salida a la terminal, digamos antes de leer la entrada de teclado.)

La función __fpurge() desecha el contenido del buffer del flujo.

VÉASE TAMBIÉN
flockfile(3), fpurge(3)