FOPEN(3)            Linux Programmer's Manual            FOPEN(3)

NAME
       fopen, fdopen, freopen - stream open functions

SYNOPSIS
       #include <stdio.h>

       FILE *fopen( char *path, char *mode);
       FILE *fdopen( int fildes, char *mode);
       FILE *freopen( char *path, char *mode, FILE *stream);

DESCRIPTION
       The fopen function opens the file whose name is the string
       pointed to by path and associates a stream with it.

       The argument mode points to a string beginning with one of
       the  following sequences (Additional characters may follow
       these sequences.):

       r      Open text file for reading.  The  stream  is  posi-
              tioned at the beginning of the file.

       r+     Open  for reading and writing.  The stream is posi-
              tioned at the beginning of the file.

       w      Truncate file to zero length or  create  text  file
              for  writing.   The  stream  is  positioned  at the
              beginning of the file.

       w+     Open for reading and writing.  The file is  created
              if  it  does  not exist, otherwise it is truncated.
              The stream is positioned at the  beginning  of  the
              file.

       a      Open  for  writing.  The file is created if it does
              not exist.  The stream is positioned at the end  of
              the file.

       a+     Open  for reading and writing.  The file is created
              if it does not exist.  The stream is positioned  at
              the end of the file.

       The  mode  string can also include the letter ``b'' either
       as a third character or as a character between the charac-
       ters  in any of the two-character strings described above.
       This is strictly for compatibility with  ANSI  C3.159-1989
       (``ANSI C'') and has no effect; the ``b'' is ignored.

       Any       created      files      will      have      mode
       S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH (0666), as
       modified by the process' umask value (see umask(2).

       Reads  and  writes may be intermixed on read/write streams
       in any order, and do not require an intermediate  seek  as
       in  previous  versions  of stdio.  This is not portable to

BSD MANPAGE              13 December 1995                       1

FOPEN(3)            Linux Programmer's Manual            FOPEN(3)

       other systems, but does work under Linux.  ANSI C requires
       that  a file positioning function intervene between output
       and input, unless an input  operation  encounters  end-of-
       file.

       The  fdopen function associates a stream with the existing
       file descriptor, fildes.  The mode of the stream  must  be
       compatible with the mode of the file descriptor.  The file
       descriptor is not dup'ed.

       The freopen function opens the  file  whose  name  is  the
       string  pointed  to  by  path  and  associates  the stream
       pointed to by stream with it.  The original stream (if  it
       exists)  is  closed.  The mode argument is used just as in
       the fopen function.  The primary use of the freopen  func-
       tion is to change the file associated with a standard text
       stream (stderr, stdin, or stdout).

RETURN VALUES
       Upon  successful  completion  fopen,  fdopen  and  freopen
       return  a  FILE  pointer.  Otherwise, NULL is returned and
       the global variable errno is set to indicate the error.

ERRORS
       EINVAL The mode provided to fopen, fdopen, or freopen  was
              invalid.

       The  fopen, fdopen and freopen functions may also fail and
       set errno for any of the errors specified for the  routine
       malloc(3).

       The  fopen function may also fail and set errno for any of
       the errors specified for the routine open(2).

       The fdopen function may also fail and set errno for any of
       the errors specified for the routine fcntl(2).

       The  freopen  function may also fail and set errno for any
       of  the  errors  specified  for  the   routines   open(2),
       fclose(3) and fflush(3).

SEE ALSO
       open(2), fclose(3)

STANDARDS
       The   fopen   and   freopen   functions  conform  to  ANSI
       C3.159-1989 (``ANSI C'').  The fdopen function conforms to
       IEEE Std1003.1-1988 (``POSIX'').

BSD MANPAGE              13 December 1995                       2