Next: , Previous: ferror, Up: Stdio


4.9 fflush—flush buffered file output

Synopsis

     #include <stdio.h>
     int fflush(FILE *fp);
     
     int _fflush_r(struct _reent *reent, FILE *fp);
     

Description
The stdio output functions can buffer output before delivering it to the host system, in order to minimize the overhead of system calls.

Use fflush to deliver any such pending output (for the file or stream identified by fp) to the host system.

If fp is NULL, fflush delivers pending output from all open files.

Additionally, if fp is a seekable input stream visiting a file descriptor, set the position of the file descriptor to match next unread byte, useful for obeying POSIX semantics when ending a process without consuming all input from the stream.

The alternate function _fflush_r is a reentrant version, where the extra argument reent is a pointer to a reentrancy structure, and fp must not be NULL.


Returns
fflush returns 0 unless it encounters a write error; in that situation, it returns EOF.


Portability
ANSI C requires fflush. The behavior on input streams is only specified by POSIX, and not all implementations follow POSIX rules.

No supporting OS subroutines are required.