Man Linux: Main Page and Category List

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 .