### 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.