Provided by: manpages-posix-dev_2.16-1_all bug

NAME

       fflush - flush a stream

SYNOPSIS

       #include <stdio.h>

       int fflush(FILE *stream);

DESCRIPTION

       If  stream  points  to  an  output  stream  or  an  update stream in which the most recent
       operation was not input, fflush() shall cause any unwritten data for  that  stream  to  be
       written  to the file,    and the st_ctime and st_mtime fields of the underlying file shall
       be marked for update.

       If stream is a null pointer, fflush() shall perform this flushing action  on  all  streams
       for which the behavior is defined above.

RETURN VALUE

       Upon  successful  completion,  fflush()  shall return 0; otherwise, it shall set the error
       indicator for the stream, return EOF,  and set errno to indicate the error.

ERRORS

       The fflush() function shall fail if:

       EAGAIN The O_NONBLOCK flag is set for  the  file  descriptor  underlying  stream  and  the
              process would be delayed in the write operation.

       EBADF  The file descriptor underlying stream is not valid.

       EFBIG  An attempt was made to write a file that exceeds the maximum file size.

       EFBIG  An attempt was made to write a file that exceeds the process' file size limit.

       EFBIG  The file is a regular file and an attempt was made to write at or beyond the offset
              maximum associated with the corresponding stream.

       EINTR  The fflush() function was interrupted by a signal.

       EIO    The process is a member of a background process group attempting to  write  to  its
              controlling  terminal,  TOSTOP is set, the process is neither ignoring nor blocking
              SIGTTOU, and the process group of the process is orphaned. This error may  also  be
              returned under implementation-defined conditions.

       ENOSPC There was no free space remaining on the device containing the file.

       EPIPE  An  attempt  is made to write to a pipe or FIFO that is not open for reading by any
              process. A SIGPIPE signal shall also be sent to the thread.

       The fflush() function may fail if:

       ENXIO  A request was made of  a  nonexistent  device,  or  the  request  was  outside  the
              capabilities of the device.

       The following sections are informative.

EXAMPLES

   Sending Prompts to Standard Output
       The following example uses printf() calls to print a series of prompts for information the
       user must enter from standard input. The fflush()  calls  force  the  output  to  standard
       output.  The fflush() function is used because standard output is usually buffered and the
       prompt may not immediately be printed on the output or terminal.  The  gets()  calls  read
       strings  from  standard  input  and  place  the results in variables, for use later in the
       program.

              #include <stdio.h>
              ...
              char user[100];
              char oldpasswd[100];
              char newpasswd[100];
              ...
              printf("User name: ");
              fflush(stdout);
              gets(user);

              printf("Old password: ");
              fflush(stdout);
              gets(oldpasswd);

              printf("New password: ");
              fflush(stdout);
              gets(newpasswd);
              ...

APPLICATION USAGE

       None.

RATIONALE

       Data buffered by the system may make determining the  validity  of  the  position  of  the
       current  file  descriptor  impractical.  Thus,  enforcing  the  repositioning  of the file
       descriptor  after  fflush()  on   streams   open   for   read()   is   not   mandated   by
       IEEE Std 1003.1-2001.

FUTURE DIRECTIONS

       None.

SEE ALSO

       getrlimit() , ulimit() , the Base Definitions volume of IEEE Std 1003.1-2001, <stdio.h>

COPYRIGHT

       Portions  of  this  text  are  reprinted  and  reproduced in electronic form from IEEE Std
       1003.1, 2003 Edition, Standard for Information Technology  --  Portable  Operating  System
       Interface  (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003 by
       the Institute of Electrical and Electronics Engineers, Inc and  The  Open  Group.  In  the
       event  of  any  discrepancy  between this version and the original IEEE and The Open Group
       Standard, the original IEEE and The Open Group  Standard  is  the  referee  document.  The
       original Standard can be obtained online at http://www.opengroup.org/unix/online.html .