File: *manpages*,  Node: fdopen,  Up: (dir)



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

NAME
       fopen, fdopen, freopen - stream open functions

SYNOPSIS
       #include <stdio.h>

       FILE *fopen (const char *path, const char *mode);
       FILE *fdopen (int fildes, const char *mode);
       FILE  *freopen  (const  char *path, const 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.   Note  that  ANSI  C requires that a file

BSD MANPAGE              13 December 1995                       1

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

       positioning function intervene between output  and  input,
       unless  an  input  operation  encounters end-of-file.  (If
       this condition is not met,  then  a  read  is  allowed  to
       return  the  result of writes other than the most recent.)
       Therefore it is good practice (and indeed sometimes neces
       sary  under  Linux)  to  put an fseek or fgetpos operation
       between write and read operations on such a stream.   This
       operation  may  be an apparent no-op (as in fseek(..., 0L,
       SEEK_CUR) called for its synchronizing side effect.

       The fdopen function associates a stream with the  existing
       file  descriptor,  fildes.  The mode of the stream (one of
       the values "r", "r+", "w", "w+", "a", "a+") must  be  com
       patible  with  the  mode of the file descriptor.  The file
       position indicator of  the  new  stream  is  set  to  that
       belonging to fildes, and the error and end-of-file indica
       tors are cleared.  Modes "w" or "w+" do not cause  trunca
       tion  of the file.  The file descriptor is not dup'ed, and
       will be closed  when  the  stream  created  by  fdopen  is
       closed.   The result of applying fdopen to a shared memory
       object is undefined.

       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).

BSD MANPAGE              13 December 1995                       2

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

SEE ALSO
       open(2), fclose(3)

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

BSD MANPAGE              13 December 1995                       3

