2 .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for
3 .\" permission to reproduce portions of its copyrighted documentation.
4 .\" Original documentation from The Open Group can be obtained online at
5 .\" http://www.opengroup.org/bookstore/.
7 .\" The Institute of Electrical and Electronics Engineers and The Open
8 .\" Group, have given us permission to reprint portions of their
11 .\" In the following statement, the phrase ``this text'' refers to portions
12 .\" of the system documentation.
14 .\" Portions of this text are reprinted and reproduced in electronic form
15 .\" in the SunOS Reference Manual, from IEEE Std 1003.1, 2004 Edition,
16 .\" Standard for Information Technology -- Portable Operating System
17 .\" Interface (POSIX), The Open Group Base Specifications Issue 6,
18 .\" Copyright (C) 2001-2004 by the Institute of Electrical and Electronics
19 .\" Engineers, Inc and The Open Group. In the event of any discrepancy
20 .\" between these versions and the original IEEE and The Open Group
21 .\" Standard, the original IEEE and The Open Group Standard is the referee
22 .\" document. The original Standard can be obtained online at
23 .\" http://www.opengroup.org/unix/online.html.
25 .\" This notice shall appear on any product containing this material.
27 .\" The contents of this file are subject to the terms of the
28 .\" Common Development and Distribution License (the "License").
29 .\" You may not use this file except in compliance with the License.
31 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
32 .\" or http://www.opensolaris.org/os/licensing.
33 .\" See the License for the specific language governing permissions
34 .\" and limitations under the License.
36 .\" When distributing Covered Code, include this CDDL HEADER in each
37 .\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
38 .\" If applicable, add the following below this CDDL HEADER, with the
39 .\" fields enclosed by brackets "[]" replaced with your own identifying
40 .\" information: Portions Copyright [yyyy] [name of copyright owner]
43 .\" Portions Copyright (c) 1992, X/Open Company Limited All Rights Reserved
44 .\" Copyright (c) 2002, Sun Microsystems, Inc. All Rights Reserved.
46 .TH FREOPEN 3C "Jul 24, 2002"
48 freopen \- open a stream
54 \fBFILE *\fR\fBfreopen\fR(\fBconst char *\fR\fIfilename\fR, \fBconst char *\fR\fImode\fR, \fBFILE *\fR\fIstream\fR);
59 The \fBfreopen()\fR function first attempts to flush the stream and close any
60 file descriptor associated with \fIstream\fR. Failure to flush or close the
61 file successfully is ignored. The error and end-of-file indicators for the
65 The \fBfreopen()\fR function opens the file whose pathname is the string
66 pointed to by \fIfilename\fR and associates the stream pointed to by
67 \fIstream\fR with it. The \fImode\fR argument is used just as in
71 If \fIfilename\fR is a null pointer and the application conforms to SUSv3 (see
72 \fBstandards\fR(5)), the \fBfreopen()\fR function attempts to change the mode
73 of the stream to that specified by \fImode\fR, as though the name of the file
74 currently associated with the \fIstream\fR had been used. The following
75 changes of mode are permitted, depending upon the access mode of the file
76 descriptor underlying the stream:
81 When \fB+\fR is specified, the file descriptor mode must be \fBO_RDWR\fR.
87 When \fBr\fR is specified, the file descriptor mode must be \fBO_RDONLY\fR or
94 When \fBa\fR or \fBw\fR is specified, the file descriptor mode must be
95 \fBO_WRONLY\fR or \fBO_RDWR\fR.
99 If the filename is a null pointer and the application does not conform to
100 SUSv3, \fBfreopen()\fR returns a null pointer.
103 The original stream is closed regardless of whether the subsequent open
107 After a successful call to the \fBfreopen()\fR function, the orientation of the
108 stream is cleared, the encoding rule is cleared, and the associated
109 \fBmbstate_t\fR object is set to describe an initial conversion state.
112 The largest value that can be represented correctly in an object of type
113 \fBoff_t\fR will be established as the offset maximum in the open file
117 Upon successful completion, \fBfreopen()\fR returns the value of \fIstream\fR.
118 Otherwise, a null pointer is returned and \fBerrno\fR is set to indicate the
122 The \fBfreopen()\fR function will fail if:
129 Search permission is denied on a component of the path prefix, or the file
130 exists and the permissions specified by \fImode\fR are denied, or the file does
131 not exist and write permission is denied for the parent directory of the file
141 The application conforms to SUSv3, the \fIfilename\fR argument is a null
142 pointer, and either the underlying file descriptor is not valid or the mode
143 specified when the underlying file descriptor was opened does not support the
144 file access modes requested by the \fImode\fR argument.
153 The application does not conform to SUSv3 and the \fIfilename\fR argument is a
163 A signal was caught during \fBfreopen()\fR.
172 The named file is a directory and \fImode\fR requires write access.
181 Too many symbolic links were encountered in resolving \fIpath\fR.
190 There are {\fBOPEN_MAX\fR} file descriptors currently open in the calling
197 \fB\fBENAMETOOLONG\fR\fR
200 The length of the \fIfilename\fR exceeds {\fIPATH_MAX\fR} or a pathname
201 component is longer than {\fINAME_MAX\fR}.
210 The maximum allowable number of files is currently open in the system.
219 A component of \fIfilename\fR does not name an existing file or \fIfilename\fR
229 The directory or file system that would contain the new file cannot be
230 expanded, the file does not exist, and it was to be created.
239 A component of the path prefix is not a directory.
248 The named file is a character special or block special file, and the device
249 associated with this special file does not exist.
255 \fB\fBEOVERFLOW\fR\fR
258 The current value of the file position cannot be represented correctly in an
259 object of type \fBoff_t\fR.
268 The named file resides on a read-only file system and \fImode\fR requires write
274 The \fBfreopen()\fR function may fail if:
281 The value of the \fImode\fR argument is not valid.
287 \fB\fBENAMETOOLONG\fR\fR
290 Pathname resolution of a symbolic link produced an intermediate result whose
291 length exceeds {\fIPATH_MAX\fR}.
300 Insufficient storage space is available.
309 A request was made of a non-existent device, or the request was outside the
310 capabilities of the device.
319 The file is a pure procedure (shared text) file that is being executed and
320 \fImode\fR requires write access.
325 The \fBfreopen()\fR function is typically used to attach the preopened
326 \fIstreams\fR associated with \fBstdin\fR, \fBstdout\fR and \fBstderr\fR to
327 other files. By default \fBstderr\fR is unbuffered, but the use of
328 \fBfreopen()\fR will cause it to become buffered or line-buffered.
331 See \fBattributes\fR(5) for descriptions of the following attributes:
339 ATTRIBUTE TYPE ATTRIBUTE VALUE
341 Interface Stability Standard
348 \fBfclose\fR(3C), \fBfdopen\fR(3C), \fBfopen\fR(3C), \fBstdio\fR(3C),
349 \fBattributes\fR(5), \fBstandards\fR(5)