fflush(3C)




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()
     causes any unwritten data for that stream to be  written  to
     the file, and the st_ctime and st_mtime fields of the under-
     lying file are marked for update.

     If stream is a null pointer, fflush() performs this flushing
     action  on  all  streams  for  which the behavior is defined
     above. Additionally, an input stream  or  an  update  stream
     into  which  the  most  recent  operation  was input is also
     flushed if it is seekable and is not already at end-of-file.
     Flushing  an  input  stream  discards any buffered input and
     adjusts the file pointer such that the next input  operation
     accesses  the  byte  after  the  last one read.  A stream is
     seekable if the underlying file is not a pipe, FIFO, socket,
     or  TTY  device.  An input stream, seekable or non-seekable,
     can be flushed by explicitly calling fflush()  with  a  non-
     null argument specifying that stream.


RETURN VALUES

     Upon successful completion, fflush() returns  0.  Otherwise,
     it returns EOF and sets errno to indicate the error.


ERRORS

     The fflush() function will 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 or the process's file size limit; or
           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.

     ENOSPC
           There was no free space remaining on the  device  con-
           taining 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
           will also be sent to the process.

     The fflush() function may fail if:

     ENXIO A request was made of a non-existent  device,  or  the
           request was beyond the limits of the device.


USAGE

     When a UFS file system is mounted with logging enabled, file
     system  transactions  that  free blocks from files might not
     actually add those freed blocks to the  file  system's  free
     list  until  some  unspecified  time  in  the  future.  This
     behavior improves file system performance but does not  con-
     form  to the POSIX, Single UNIX Specification, SPARC Confor-
     mance Definition, System  V  Application  Binary  Interface,
     System  V Interface Definition, and X/Open Portability Guide
     Standards, which  require  that  freed  space  be  available
     immediately.  To enable standards conformance regarding file
     deletions or to address the problem of  not  being  able  to
     grow  files  on a relatively full UFS file system even after
     files  have  been  deleted,   disable   UFS   logging   (see
     mount_ufs(1M).


ATTRIBUTES

     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | MT-Level                    | MT-Safe                     |
    |_____________________________|_____________________________|


SEE ALSO

     mount_ufs(1M), getrlimit(2), ulimit(2), attributes(5)


Man(1) output converted with man2html