__fbufsize, __flbf, __fpending, __fpurge, __freadable, __freading, __fsetlocking, __fwritable, __fwriting, _flushlbf − interfaces to stdio FILE structure


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

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


Solaris introduced routines to allow portable access to the internals of the FILE structure, and glibc also implemented these.

The __fbufsize() function returns the size of the buffer currently used by the given stream.

The __fpending() function returns the number of bytes in the output buffer. For wide-oriented streams the unit is wide characters. This function is undefined on buffers in reading mode, or opened read-only.

The __flbf() function returns a nonzero value if the stream is line-buffered, and zero otherwise.

The __freadable() function returns a nonzero value if the stream allows reading, and zero otherwise.

The __fwritable() function returns a nonzero value if the stream allows writing, and zero otherwise.

The __freading() function returns a nonzero value if the stream is read-only, or if the last operation on the stream was a read operation, and zero otherwise.

The __fwriting() function returns a nonzero value if the stream is write-only (or append-only), or if the last operation on the stream was a write operation, and zero otherwise.

The __fsetlocking() function can be used to select the desired type of locking on the stream. It returns the current type. The type argument can take the following three values:

Perform implicit locking around every operation on the given stream (except for the *_unlocked ones). This is the default.


The caller will take care of the locking (possibly using flockfile(3) in case there is more than one thread), and the stdio routines will not do locking until the state is reset to FSETLOCKING_INTERNAL.


Don’t change the type of locking. (Only return it.)

The _flushlbf() function flushes all line-buffered streams. (Presumably so that output to a terminal is forced out, say before reading keyboard input.)

The __fpurge() function discards the contents of the stream’s buffer.


Multithreading (see pthreads(7))
The __fbufsize(), __fpending(), __fpurge() and __fsetlocking() functions do not lock the stream, so they are not thread-safe.

The __flbf(), __freadable(), __freading(), __fwritable(), __fwriting() and _flushlbf() functions are thread-safe.


flockfile(3), fpurge(3)


This page is part of release 3.69 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at−pages/.

More Linux Commands

cacosh(3) - complex arc hyperbolic cosine - Linux man page
The cacosh() function calculates the complex arc hyperbolic cosine of z. If y = cacosh(z), then z = ccosh(y). The imaginary part of y is chosen in the interval

archive(8) - Usenet article archiver - Linux manual page....
archive makes copies of files specified on its standard input. It is normally run either as a channel feed under innd or by a script before news.daily is run. a

ifcfg-tunnel(5) - network tunnel interface configuration tool
It is possible to create static IP tunnel interfaces for three different protocols: SIT IPv6 over IPv4 tunnel GRE universal IPv4 tunnel IPIP. creation of user..

loginctl(1) Control the systemd login manager (Man Page)....
loginctl may be used to introspect and control the state of the systemd(1) login manager systemd-logind.service(8). OPTIONS The following options are understood

pamdepth(1) - change the maxval in a Netpbm image (ManPage)
This program is part of Netpbm(1) pamdepth reads a Netpbm image as input, changes its depth (color resolution), and writes out the resulting Netpbm image. I.e.

gnutls_x509_crq_get_attribute_info(3) - API function........
This function will return the requested attribute OID in the certificate, and the critical flag for it. The attribute OID will be stored as a string in the prov

gnutls_x509_crt_check_issuer(3) - API function (Man Page)...
This function will check if the given certificate was issued by the given issuer. RETURNS It will return true (1) if the given certificate is issued by the give

acl_entries(3) - return the number of entries in an ACL.....
The acl_entries() function returns the number of ACL entries that are contained in the ACL referred to by the argument acl. RETURN VALUE The acl_entries() funct

gnutls_x509_crq_deinit(3) - API function - Linux man page...
This function will deinitialize a PKCS10 certificate request structure. REPORTING BUGS Report bugs to &lt;;. GnuTLS home page:

sync(2) - commit buffer cache to disk - Linux manual page...
sync() causes all buffered modifications to file metadata and data to be written to the underlying filesystems. syncfs() is like sync(), but synchronizes just t

XtAppAddTimeOut(3) - register and remove timeouts (ManPage)
The XtAppAddTimeOut function creates a timeout and returns an identifier for it. The timeout value is set to interval. The callback procedure is called when the

csinf(3) - complex sine function (Library - Linux man page)
The complex sine function is defined as: csin(z) = (exp(i * z) - exp(-i * z)) / (2 * i) VERSIONS These functions first appeared in glibc in version 2.1. CONFORM

We can't live, work or learn in freedom unless the software we use is free.