Standard C Library Functions freopen(3C)
NAME
freopen - open a stream
SYNOPSIS
#include
FILE *freopen(const char *filename, const char *mode, FILE *stream);
DESCRIPTION
The freopen() function first attempts to flush the stream
and close any file descriptor associated with stream.
Failure to flush or close the file successfully is ignored.
The error and end-of-file indicators for the stream are
cleared.
The freopen() function opens the file whose pathname is the
string pointed to by filename and associates the stream
pointed to by stream with it. The mode argument is used just
as in fopen(3C).
If filename is a null pointer and the application comforms
to SUSv3 (see standards(5)), the freopen() function attempts
to change the mode of the stream to that specified by mode,
as though the name of the file currently associated with the
stream had been used. The following changes of mode are
permitted, depending upon the access mode of the file
descriptor underlying the stream:
o When ] is specified, the file descriptor mode must
be ORDWR.
o When r is specified, the file descriptor mode must
be ORDONLY or ORDWR.
o When a or w is specified, the file descriptor mode
must be OWRONLY or ORDWR.
If the filename is a null pointer and the application does
not comform to SUSv3, freopen() returns a null pointer.
The original stream is closed regardless of whether the sub-
sequent open succeeds.
After a successful call to the freopen() function, the
orientation of the stream is cleared, the encoding rule is
cleared, and the associated mbstatet object is set to
SunOS 5.11 Last change: 24 Jul 2002 1
Standard C Library Functions freopen(3C)
describe an initial conversion state.
The largest value that can be represented correctly in an
object of type offt will be established as the offset max-
imum in the open file description.
RETURN VALUES
Upon successful completion, freopen() returns the value of
stream. Otherwise, a null pointer is returned and errno is
set to indicate the error.
ERORS
The freopen() function will fail if:
EACES Search permission is denied on a component
of the path prefix, or the file exists and
the permissions specified by mode are
denied, or the file does not exist and write
permission is denied for the parent direc-
tory of the file to be created.
EBADF The application comforms to SUSv3, the
filename argument is a null pointer, and
either the underlying file descriptor is not
valid or the mode specified when the under-
lying file descriptor was opened does not
support the file access modes requested by
the mode argument.
EFAULT The application does not comform to SUSv3
and the filename argument is a null pointer.
EINTR A signal was caught during freopen().
EISDIR The named file is a directory and mode
requires write access.
ELOP Too many symbolic links were encountered in
resolving path.
EMFILE There are {OPENMAX} file descriptors
currently open in the calling process.
SunOS 5.11 Last change: 24 Jul 2002 2
Standard C Library Functions freopen(3C)
ENAMETOLONG The length of the filename exceeds
{PATHMAX} or a pathname component is longer
than {NAMEMAX}.
ENFILE The maximum allowable number of files is
currently open in the system.
ENOENT A component of filename does not name an
existing file or filename is an empty
string.
ENOSPC The directory or file system that would con-
tain the new file cannot be expanded, the
file does not exist, and it was to be
created.
ENOTDIR A component of the path prefix is not a
directory.
ENXIO The named file is a character special or
block special file, and the device associ-
ated with this special file does not exist.
EOVERFLOW The current value of the file position can-
not be represented correctly in an object of
type offt.
EROFS The named file resides on a read-only file
system and mode requires write access.
The freopen() function may fail if:
EINVAL The value of the mode argument is not valid.
ENAMETOLONG Pathname resolution of a symbolic link pro-
duced an intermediate result whose length
exceeds {PATHMAX}.
ENOMEM Insufficient storage space is available.
SunOS 5.11 Last change: 24 Jul 2002 3
Standard C Library Functions freopen(3C)
ENXIO A request was made of a non-existent device,
or the request was outside the capabilities
of the device.
ETXTBSY The file is a pure procedure (shared text)
file that is being executed and mode
requires write access.
USAGE
The freopen() function is typically used to attach the preo-
pened streams associated with stdin, stdout and stderr to
other files. By default stderr is unbuffered, but the use of
freopen() will cause it to become buffered or line-buffered.
The freopen() function has a transitional interface for 64-
bit file offsets. See lf64(5).
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
ATRIBUTE TYPE ATRIBUTE VALUE
Interface Stability Standard
MT-Level MT-Safe
SEE ALSO
fclose(3C), fdopen(3C), fopen(3C), stdio(3C), attributes(5),
lf64(5), standards(5)
SunOS 5.11 Last change: 24 Jul 2002 4
|