unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-4.1.3)
Page:
Section:
Apropos / Subsearch:
optional field

FOPEN(3V)                                                            FOPEN(3V)



NAME
       fopen, freopen, fdopen - open a stream

SYNOPSIS
       #include <&lt;stdio.h>&gt;

       FILE *fopen(filename, type)
       char *filename, *type;

       FILE *freopen(filename, type, stream)
       char *filename, *type;
       FILE *stream;

       FILE *fdopen(fd, type)
       int fd;
       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 orig-
       inal value of stream.

       freopen()  is typically used to attach the preopened streams associated
       with stdin, stdout, and stderr to other files.

       fdopen() associates  a  stream  with  the  file  descriptor  fd.   File
       descriptors  are obtained from calls like open(2V), dup(2V), creat(2V),
       or pipe(2V), 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 access permissions 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(3S) or rewind(), and input  may  not
       be   directly  followed  by  output  without  an  intervening  fseek(),
       rewind(), or an input operation which encounters EOF.

SYSTEM V DESCRIPTION
       When a file is opened for append (that is, 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 disre-
       garded.  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 sepa-
       rate 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.

RETURN VALUES
       On  success,  fopen(), freopen(), and fdopen() return a pointer to FILE
       which identifies the opened stream.  On failure, they return NULL.

SEE ALSO
       open(2V), pipe(2V), fclose(3V), fseek(3S)

BUGS
       In order to support the same number of open files that the system does,
       fopen()  must allocate additional memory for data structures using cal-
       loc() after 64 files have been opened.   This  confuses  some  programs
       which use their own memory allocators.



                                21 January 1990                      FOPEN(3V)