fclose - close a stream


     #include <stdio.h>

     int fclose(FILE *stream);


     The fclose() function causes the stream pointed to by stream
     to  be  flushed  and  the  associated file to be closed. Any
     unwritten buffered data for the stream  is  written  to  the
     file;  any  unread buffered data is discarded. The stream is
     disassociated from the file. If the  associated  buffer  was
     automatically allocated, it is deallocated.

     The fclose() function marks  for  update  the  st_ctime  and
     st_mtime  fields  of  the  underlying  file if the stream is
     writable and if buffered data has not yet  been  written  to
     the  file.  It will perform a close(2) operation on the file
     descriptor that is associated with the stream pointed to  by

     After the call to fclose(), any use of stream  causes  unde-
     fined behavior.

     The fclose() function is  performed  automatically  for  all
     open files upon calling exit(2).


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


     The fclose() function will fail if:

           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 fclose() function was interrupted by a signal.

     EIO   The process is a member of a background process  group
           attempting  to write to its controlling terminal, TOS-
           TOP is set, the process is neither ignoring nor block-
           ing  SIGTTOU  and  the process group of the process is

           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 fclose() function may fail if:

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


     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


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

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


     mount_ufs(1M), close(2), exit(2),  getrlimit(2),  ulimit(2),
     fopen(3C), stdio(3C), attributes(5)

Man(1) output converted with man2html