For output streams, fflush() forces a write of all user-space
buffered data for the given output or update stream via the stream's
underlying write function.
For input streams associated with seekable files (e.g., disk files,
but not pipes or terminals), fflush() discards any buffered data that
has been fetched from the underlying file, but has not been consumed
by the application.
The open status of the stream is unaffected.
If the stream argument is NULL, fflush() flushes all open output
streams.
For a nonlocking counterpart, see unlocked_stdio(3).

Note that fflush() flushes only the user-space buffers provided by
the C library. To ensure that the data is physically stored on disk
the kernel buffers must be flushed too, for example, with sync(2) or
fsync(2).

This page is part of release 4.13 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
https://www.kernel.org/doc/man-pages/.
GNU 2017-09-15 FFLUSH(3)