100 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.\" Copyright (c) 1980 Regents of the University of California.
 | 
						|
.\" All rights reserved.  The Berkeley software License Agreement
 | 
						|
.\" specifies the terms and conditions for redistribution.
 | 
						|
.\"
 | 
						|
.\"	@(#)fopen.3s	6.3 (Berkeley) 5/27/86
 | 
						|
.\"
 | 
						|
.TH FOPEN 3  "May 27, 1986"
 | 
						|
.UC 4
 | 
						|
.SH NAME
 | 
						|
fopen, freopen, fdopen \- open a stream
 | 
						|
.SH SYNOPSIS
 | 
						|
.nf
 | 
						|
.ft B
 | 
						|
#include <stdio.h>
 | 
						|
 | 
						|
FILE *fopen(const char *\fIfilename\fP, const char *\fItype\fP)
 | 
						|
FILE *freopen(const char *\fIfilename\fP, const char *\fItype\fP, FILE *\fIstream\fP)
 | 
						|
FILE *fdopen(int \fIfildes\fP, const char *\fItype\fP)
 | 
						|
.ft R
 | 
						|
.fi
 | 
						|
.SH DESCRIPTION
 | 
						|
.B Fopen
 | 
						|
opens the file named by
 | 
						|
.I filename
 | 
						|
and associates a stream with it.
 | 
						|
.B Fopen
 | 
						|
returns a pointer to be used to identify the stream in subsequent operations.
 | 
						|
.PP
 | 
						|
.I Type
 | 
						|
is a character string having one of the following values:
 | 
						|
.TP 5
 | 
						|
"r"
 | 
						|
open for reading
 | 
						|
.ns
 | 
						|
.TP 5
 | 
						|
"w"
 | 
						|
create for writing
 | 
						|
.ns
 | 
						|
.TP 5
 | 
						|
"a"
 | 
						|
append: open for writing at end of file, or create for writing
 | 
						|
.PP
 | 
						|
In addition, each
 | 
						|
.I type
 | 
						|
may be followed by a "+" to have the file opened for reading and writing.
 | 
						|
"r+" positions the stream at the beginning of the file, "w+" creates
 | 
						|
or truncates it, and "a+" positions it at the end.  Both reads and writes
 | 
						|
may be used on read/write streams, with the limitation that an
 | 
						|
.BR fseek ,
 | 
						|
.BR rewind ,
 | 
						|
or reading an end-of-file must be used between a read and a write or vice-versa.
 | 
						|
.PP
 | 
						|
.B Freopen
 | 
						|
substitutes the named file in place of the open
 | 
						|
.IR stream .
 | 
						|
It returns the original value of
 | 
						|
.IR stream .
 | 
						|
The original stream is closed.
 | 
						|
.PP
 | 
						|
.B Freopen
 | 
						|
is typically used to attach the preopened constant names,
 | 
						|
.B stdin, stdout, stderr,
 | 
						|
to specified files.
 | 
						|
.PP
 | 
						|
.B Fdopen
 | 
						|
associates a stream with a file descriptor obtained from
 | 
						|
.BR open ,
 | 
						|
.BR dup ,
 | 
						|
.BR creat ,
 | 
						|
or
 | 
						|
.BR pipe (2).
 | 
						|
The
 | 
						|
.I type
 | 
						|
of the stream must agree with the mode of the open file.
 | 
						|
.SH "SEE ALSO"
 | 
						|
.BR open (2),
 | 
						|
.BR fclose (3).
 | 
						|
.SH DIAGNOSTICS
 | 
						|
.B Fopen
 | 
						|
and 
 | 
						|
.B freopen
 | 
						|
return the pointer
 | 
						|
.SM
 | 
						|
.B NULL
 | 
						|
if
 | 
						|
.I filename
 | 
						|
cannot be accessed,
 | 
						|
if too many files are already open,
 | 
						|
or if other resources needed cannot be allocated.
 | 
						|
.SH BUGS
 | 
						|
.B Fdopen
 | 
						|
is not portable to systems other than UNIX.
 | 
						|
.PP
 | 
						|
The read/write 
 | 
						|
.I types
 | 
						|
do not exist on all systems.  Those systems without
 | 
						|
read/write modes will probably treat the 
 | 
						|
.I type
 | 
						|
as if the "+" was not present.  These are unreliable in any event.
 |