.\" Chris Torek and the American National Standards Committee X3,
.\" on Information Processing Systems.
.\"
+.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
+.\" %%%LICENSE_END
.\"
.\" @(#)fflush.3 5.4 (Berkeley) 6/29/91
.\"
.\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith@cs.unc.edu
.\"
-.\" Modified 2000-07-22 by Nicolás Lichtmaier <nick@debian.org>
+.\" Modified 2000-07-22 by Nicolás Lichtmaier <nick@debian.org>
.\" Modified 2001-10-16 by John Levon <moz@compsoc.man.ac.uk>
.\"
-.TH FFLUSH 3 2009-09-06 "GNU" "Linux Programmer's Manual"
+.TH FFLUSH 3 2015-02-01 "GNU" "Linux Programmer's Manual"
.SH NAME
fflush \- flush a stream
.SH SYNOPSIS
forces a write of all user-space buffered data for the given output or update
.I stream
via the stream's underlying write function.
-For input streams,
+
+For input streams associated with seekable files
+(e.g., disk files, but not pipes or terminals),
.BR 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.
.PP
If the
flushes
.I all
open output streams.
+.\" mtk: POSIX specifies that only output streams are flushed for this case.
+.\" Also verified for glibc by experiment.
.PP
For a nonlocking counterpart, see
.BR unlocked_stdio (3).
-.SH "RETURN VALUE"
+.SH RETURN VALUE
Upon successful completion 0 is returned.
Otherwise,
.B EOF
.SH ERRORS
.TP
.B EBADF
-.I Stream
+.I stream
is not an open stream, or is not open for writing.
.PP
The function
.I errno
for any of the errors specified for
.BR write (2).
-.SH "CONFORMING TO"
+.SH ATTRIBUTES
+.SS Multithreading (see pthreads(7))
+The
+.BR fflush ()
+function is thread-safe.
+.SH CONFORMING TO
C89, C99, POSIX.1-2001, POSIX.1-2008.
-The standards do not specify the behavior for input streams.
-Most other implementations behave the same as Linux.
-.\" Verified on: Solaris 8.
+POSIX.1-2001 did not specify the behavior for flushing of input streams,
+but the behavior is specified in POSIX.1-2008.
.SH NOTES
Note that
.BR fflush ()
-only flushes the user space buffers provided by the C library.
+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
.BR sync (2)
or
.BR fsync (2).
-.SH "SEE ALSO"
+.SH SEE ALSO
.BR fsync (2),
.BR sync (2),
.BR write (2),
.BR fopen (3),
.BR setbuf (3),
.BR unlocked_stdio (3)
+.SH COLOPHON
+This page is part of release 3.79 of the Linux
+.I man-pages
+project.
+A description of the project,
+information about reporting bugs,
+and the latest version of this page,
+can be found at
+\%http://www.kernel.org/doc/man\-pages/.