Man Linux: Main Page and Category List

NAME

       fclose - close a stream

SYNOPSIS

       #include <stdio.h>

       int fclose(FILE *stream);

DESCRIPTION

       The fclose() function shall cause the stream pointed to by stream to be
       flushed and the associated file to be closed.  Any  unwritten  buffered
       data  for  the stream shall be written to the file; any unread buffered
       data shall be discarded.  Whether or not the call succeeds, the  stream
       shall be disassociated from the file and any buffer set by the setbuf()
       or setvbuf() function shall be disassociated from the  stream.  If  the
       associated buffer was automatically allocated, it shall be deallocated.

       The fclose() function shall mark for update the st_ctime  and  st_mtime
       fields  of  the  underlying  file,  if  the stream was writable, and if
       buffered data remains that has not yet been written to  the  file.  The
       fclose() function shall perform the equivalent of a close() on the file
       descriptor that is associated with the stream pointed to by stream.

       After the call to fclose(), any use  of  stream  results  in  undefined
       behavior.

RETURN VALUE

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

ERRORS

       The fclose() 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 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, 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 fclose() 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

       None.

APPLICATION USAGE

       None.

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       close() , fopen() , 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 .