fflush - flush a stream
int fflush(FILE *stream);
If stream points to an output stream or an update stream in
which the most recent operation was not input, fflush()
causes any unwritten data for that stream to be written to
the file, and the st_ctime and st_mtime fields of the under-
lying file are marked for update.
If stream is a null pointer, fflush() performs this flushing
action on all streams for which the behavior is defined
above. Additionally, an input stream or an update stream
into which the most recent operation was input is also
flushed if it is seekable and is not already at end-of-file.
Flushing an input stream discards any buffered input and
adjusts the file pointer such that the next input operation
accesses the byte after the last one read. A stream is
seekable if the underlying file is not a pipe, FIFO, socket,
or TTY device. An input stream, seekable or non-seekable,
can be flushed by explicitly calling fflush() with a non-
null argument specifying that stream.
Upon successful completion, fflush() returns 0. Otherwise,
it returns EOF and sets errno to indicate the error.
The fflush() function will fail if:
The O_NONBLOCK flag is set for the file descriptor
underlying stream and the process would be delayed in
the write operation.
EBADF The file descriptor underlying stream is not valid.
EFBIG An attempt was made to write a file that exceeds the
maximum file size or the process's file size limit; or
the file is a regular file and an attempt was made to
write at or beyond the offset maximum associated with
the corresponding stream.
EINTR The fflush() function was interrupted by a signal.
EIO The process is a member of a background process group
attempting to write to its controlling terminal,
TOSTOP is set, the process is neither ignoring nor
blocking SIGTTOU, and the process group of the process
There was no free space remaining on the device con-
taining the file.
EPIPE An attempt is made to write to a pipe or FIFO that is
not open for reading by any process. A SIGPIPE signal
will also be sent to the process.
The fflush() function may fail if:
ENXIO A request was made of a non-existent device, or the
request was beyond the limits of the device.
When a UFS file system is mounted with logging enabled, file
system transactions that free blocks from files might not
actually add those freed blocks to the file system's free
list until some unspecified time in the future. This
behavior improves file system performance but does not con-
form to the POSIX, Single UNIX Specification, SPARC Confor-
mance Definition, System V Application Binary Interface,
System V Interface Definition, and X/Open Portability Guide
Standards, which require that freed space be available
immediately. To enable standards conformance regarding file
deletions or to address the problem of not being able to
grow files on a relatively full UFS file system even after
files have been deleted, disable UFS logging (see
See attributes(5) for descriptions of the following attri-
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
| MT-Level | MT-Safe |
mount_ufs(1M), getrlimit(2), ulimit(2), attributes(5)
Man(1) output converted with