66 lines
2.8 KiB
Groff
66 lines
2.8 KiB
Groff
|
|
NAME
|
|
fopen, freopen, fdopen - open a stream
|
|
SYNTAX
|
|
#include <stdio.h>
|
|
FILE *fopen (file-name, type)
|
|
char *file-name, *type;
|
|
FILE *freopen (file-name, type, stream)
|
|
char *file-name, *type;
|
|
FILE *stream;
|
|
FILE *fdopen (fildes, type)
|
|
int fildes;
|
|
char *type;
|
|
DESCRIPTION
|
|
Fopen opens the file named by file-name and associates a
|
|
stream with it. Fopen returns a pointer to the FILE
|
|
structure associated with the stream.
|
|
File-name points to a character string that contains the
|
|
name of the file to be opened.
|
|
Type is a character string having one of the following
|
|
values:
|
|
"r" open for reading
|
|
"w" truncate or create for writing
|
|
"a" append; open for writing at end of file, or
|
|
create for writing
|
|
"r+" open for update (reading and writing)
|
|
"w+" truncate or create for update
|
|
"a+" append; open or create for update at end-of-
|
|
file
|
|
Freopen substitutes the named file in place of the open
|
|
stream. The original stream is closed, regardless of
|
|
whether the open ultimately succeeds. Freopen returns a
|
|
pointer to the FILE structure associated with stream.
|
|
Freopen is typically used to attach the preopened streams
|
|
associated with stdin, stdout and stderr to other files.
|
|
Fdopen associates a stream with a file descriptor. File
|
|
descriptors are obtained from open, dup, creat, or pipe(2),
|
|
|
|
which open files but do not return pointers to a FILE
|
|
structure stream. Streams are necessary input for many of
|
|
the Section 3S library routines. The type of stream must
|
|
agree with the mode of the open file.
|
|
When a file is opened for update, both input and output may
|
|
be done on the resulting stream. However, output may not be
|
|
directly followed by input without an intervening fseek or
|
|
rewind, and input may not be directly followed by output
|
|
without an intervening fseek, rewind, or an input operation
|
|
which encounters end-of-file.
|
|
When a file is opened for append (i.e., when type is "a" or
|
|
"a+"), it is impossible to overwrite information already in
|
|
the file. Fseek may be used to reposition the file pointer
|
|
to any position in the file, but when output is written to
|
|
the file, the current file pointer is disregarded. All
|
|
output is written at the end of the file and causes the file
|
|
pointer to be repositioned at the end of the output. If two
|
|
separate processes open the same file for append, each
|
|
process may write freely to the file without fear of
|
|
destroying output being written by the other. The output
|
|
from the two processes will be intermixed in the file in the
|
|
order in which it is written.
|
|
SEE ALSO
|
|
creat(2), dup(2), open(2), pipe(2), fclose(3S), fseek(3S).
|
|
DIAGNOSTICS
|
|
Fopen and freopen return a NULL pointer on failure.
|
|
|