COHERENT manpages
This page displays the COHERENT manpage for fflush() [Flush output stream's buffer].
List of available manpages
Index
fflush() -- STDIO Function (libc)
Flush output stream's buffer
#include <stdio.h>
int fflush(fp) FILE *fp;
fflush() flushes any buffered output data associated with the file stream
fp. The file stream stays open after fflush() is called. fclose() calls
fflush(), so there is no need for you to call it when normally closing a
file or buffer.
Example
This example demonstrates fflush(). When run, you will see the following:
Line 1
-----
Line 1
-----
Line 1
Line 2
-----
The call
fprintf(fp, "Line 2\n");
goes to a buffer and is not in the file when file foo is listed. However
if you redirect the output of this program to a file and list the file, you
will see:
Line 1
Line 1
Line 1
Line 2
-----
-----
-----
because the line
printf("-----\n");
goes into a buffer and is not printed until the program is over and all
buffers are flushed by exit().
Although the COHERENT screen drivers print all output immediately, not all
operating systems work this way, so when in doubt, fflush().
#include <stdio.h>
main()
{
FILE *fp;
if (NULL == (fp = fopen("foo", "w")))
exit(1);
fprintf (fp, "Line 1\n");
fflush (fp);
system ("cat foo"); /* print Line 1 */
printf("-----\n");
fprintf(fp, "Line 2\n");
system("cat foo"); /* print Line 1 */
printf("-----\n");
fflush(fp);
system("cat foo"); /* print Line 1 Line 2 */
printf("-----\n");
}
See Also
fclose(),
libc,
setbuf(),
write()
ANSI Standard, §7.9.5.2
POSIX Standard, §8.1
Diagnostics
fflush() returns EOF if it cannot flush the contents of the buffers;
otherwise it returns a meaningless value.
Note, also, that all STDIO routines are buffered. fflush() should be used
to flush the output buffer if you follow a STDIO routine with an unbuffered
routine.

















