fopen(3S) (BSD Compatibility Package) fopen(3S)
NAME
fopen, freopen, fdopen - open a stream
SYNOPSIS
cc [ flag... ] file ... -lucb
#include <stdio.h>
FILE *fopen(filename, type)
char *filename, *type;
FILE *freopen(filename, type, stream)
char *filename, *type;
FILE *stream;
FILE *fdopen(fildes, type)
int fildes;
char *type;
DESCRIPTION
fopen opens the file named by filename and associates a stream with
it. If the open succeeds, fopen returns a pointer to be used to
identify the stream in subsequent operations.
filename 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 EOF
freopen opens the file named by filename and associates the stream
pointed to by stream with it. The type argument is used just as in
fopen. The original stream is closed, regardless of whether the open
ultimately succeeds. If the open succeeds, freopen returns the
original value of stream.
freopen is typically used to attach the preopened streams associated
with stdin, stdout, and stderr to other files.
7/91 Page 1
fopen(3S) (BSD Compatibility Package) fopen(3S)
fdopen associates a stream with the file descriptor fildes. File
descriptors are obtained from calls like open, dup, creat, or
pipe(2), which open files but do not return streams. Streams are
necessary input for many of the Section 3S library routines. The
type of the 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 EOF.
SEE ALSO
open(2), pipe(2), fclose(3S), fseek(3S), fopen(3S), malloc(3C) in the
Programmer's Reference Manual.
RETURN VALUE
fopen, freopen, and fdopen return a NULL pointer on failure.
NOTES
fopen differs from the library routine of the same name in the base
system only in interface.
In order to support the same number of open files that the system
does, fopen must allocate additional memory for data structures using
calloc [see malloc(3)] after 64 files have been opened. This
confuses some programs which use their own memory allocators.
Page 2 7/91