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 .

IEEE/The Open Group                                   2003                                             FFLUSH(P)