1 | .\" Copyright (c) 1980 Regents of the University of California.
|
---|
2 | .\" All rights reserved. The Berkeley software License Agreement
|
---|
3 | .\" specifies the terms and conditions for redistribution.
|
---|
4 | .\"
|
---|
5 | .\" @(#)fopen.3s 6.3 (Berkeley) 5/27/86
|
---|
6 | .\"
|
---|
7 | .TH FOPEN 3 "May 27, 1986"
|
---|
8 | .UC 4
|
---|
9 | .SH NAME
|
---|
10 | fopen, freopen, fdopen \- open a stream
|
---|
11 | .SH SYNOPSIS
|
---|
12 | .nf
|
---|
13 | .ft B
|
---|
14 | #include <stdio.h>
|
---|
15 |
|
---|
16 | FILE *fopen(const char *\fIfilename\fP, const char *\fItype\fP)
|
---|
17 | FILE *freopen(const char *\fIfilename\fP, const char *\fItype\fP, FILE *\fIstream\fP)
|
---|
18 | FILE *fdopen(int \fIfildes\fP, const char *\fItype\fP)
|
---|
19 | .ft R
|
---|
20 | .fi
|
---|
21 | .SH DESCRIPTION
|
---|
22 | .B Fopen
|
---|
23 | opens the file named by
|
---|
24 | .I filename
|
---|
25 | and associates a stream with it.
|
---|
26 | .B Fopen
|
---|
27 | returns a pointer to be used to identify the stream in subsequent operations.
|
---|
28 | .PP
|
---|
29 | .I Type
|
---|
30 | is a character string having one of the following values:
|
---|
31 | .TP 5
|
---|
32 | "r"
|
---|
33 | open for reading
|
---|
34 | .ns
|
---|
35 | .TP 5
|
---|
36 | "w"
|
---|
37 | create for writing
|
---|
38 | .ns
|
---|
39 | .TP 5
|
---|
40 | "a"
|
---|
41 | append: open for writing at end of file, or create for writing
|
---|
42 | .PP
|
---|
43 | In addition, each
|
---|
44 | .I type
|
---|
45 | may be followed by a "+" to have the file opened for reading and writing.
|
---|
46 | "r+" positions the stream at the beginning of the file, "w+" creates
|
---|
47 | or truncates it, and "a+" positions it at the end. Both reads and writes
|
---|
48 | may be used on read/write streams, with the limitation that an
|
---|
49 | .BR fseek ,
|
---|
50 | .BR rewind ,
|
---|
51 | or reading an end-of-file must be used between a read and a write or vice-versa.
|
---|
52 | .PP
|
---|
53 | .B Freopen
|
---|
54 | substitutes the named file in place of the open
|
---|
55 | .IR stream .
|
---|
56 | It returns the original value of
|
---|
57 | .IR stream .
|
---|
58 | The original stream is closed.
|
---|
59 | .PP
|
---|
60 | .B Freopen
|
---|
61 | is typically used to attach the preopened constant names,
|
---|
62 | .B stdin, stdout, stderr,
|
---|
63 | to specified files.
|
---|
64 | .PP
|
---|
65 | .B Fdopen
|
---|
66 | associates a stream with a file descriptor obtained from
|
---|
67 | .BR open ,
|
---|
68 | .BR dup ,
|
---|
69 | .BR creat ,
|
---|
70 | or
|
---|
71 | .BR pipe (2).
|
---|
72 | The
|
---|
73 | .I type
|
---|
74 | of the stream must agree with the mode of the open file.
|
---|
75 | .SH "SEE ALSO"
|
---|
76 | .BR open (2),
|
---|
77 | .BR fclose (3).
|
---|
78 | .SH DIAGNOSTICS
|
---|
79 | .B Fopen
|
---|
80 | and
|
---|
81 | .B freopen
|
---|
82 | return the pointer
|
---|
83 | .SM
|
---|
84 | .B NULL
|
---|
85 | if
|
---|
86 | .I filename
|
---|
87 | cannot be accessed,
|
---|
88 | if too many files are already open,
|
---|
89 | or if other resources needed cannot be allocated.
|
---|
90 | .SH BUGS
|
---|
91 | .B Fdopen
|
---|
92 | is not portable to systems other than UNIX.
|
---|
93 | .PP
|
---|
94 | The read/write
|
---|
95 | .I types
|
---|
96 | do not exist on all systems. Those systems without
|
---|
97 | read/write modes will probably treat the
|
---|
98 | .I type
|
---|
99 | as if the "+" was not present. These are unreliable in any event.
|
---|