fclose(3S) fclose(3S)
NAME
fclose, fflush - close or flush a stream
SYNOPSIS
#include <stdio.h>
int fclose(FILE *stream);
int fflush(FILE *stream);
DESCRIPTION
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 asso-
ciated buffer was automatically allocated, it is deallocated. It marks
for update the stctime and stmtime fields of the underlying file, if
the stream was writable, and if buffered data had not been written to
the file yet. The fclose() function will perform 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 causes undefined
behavior.
If stream points to an output stream or an update stream on which the
most recent operation was not input, fflush() causes any buffered data
for the named stream to be written to that file. The stctime and
stmtime fields of the underlying file are marked for update.
When calling fflush(), if stream is a null pointer, all files open for
writing are flushed.
ERRORS
The following error code descriptions are function-specific. You will
find a general description in introprm2(2) or in errno(5).
The fclose() or fflush() function will fail if:
EAGAIN The ONONBLOCK flag is set for the file descriptor underly-
ing 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' 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 corre-
sponding stream.
EINTR The function was interrupted by a signal.
Page 1 Reliant UNIX 5.44 Printed 11/98
fclose(3S) fclose(3S)
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-dependent condi-
tions.
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 will also
be sent to the process.
The fclose() or fflush() function may fail if:
ENXIO A request was made of a non-existent device, or the request
was outside the device.
RESULT
Upon successful completion these functions return a value of zero.
Otherwise EOF is returned and errno is set to indicate the error.
SEE ALSO
close(2), exit(2), fopen(3S), setbuf(3S), stdio(3S), lfs(5), stdio(5).
Page 2 Reliant UNIX 5.44 Printed 11/98