Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
FOPEN(3)		    Library Functions Manual		      FOPEN(3)

NAME
       fopen, fdopen, freopen -- stream	open functions

LIBRARY
       Standard	C Library (libc, -lc)

SYNOPSIS
       #include	<stdio.h>

       FILE *
       fopen(const char	* restrict path, const char * restrict 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 follow-
       ing letters:

       "r"     Open for	reading.  The stream is	positioned at the beginning of
	       the file.  Fail if the file does	not exist.

       "w"     Open for	writing.  The stream is	positioned at the beginning of
	       the file.  Create the file if it	does not exist.

       "a"     Open for	writing.  The stream is	positioned at the end  of  the
	       file.   Subsequent writes to the	file will always end up	at the
	       then current end	 of  file,  irrespective  of  any  intervening
	       fseek(3)	or similar.  Create the	file if	it does	not exist.

       An  optional  "+"  following  "r",  "w",	or "a" opens the file for both
       reading and writing.  An	optional "x" following "w" or "w+" causes  the
       fopen() call to fail if the file	already	exists.

       The mode	string can also	include	the letter "b" after either the	"+" or
       the  first  letter.   This  is  strictly	for compatibility with ISO/IEC
       9899:1990 ("ISO C90") 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 other systems, however; 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  de-
       scriptor,  fildes.   The	mode of	the stream must	be compatible with the
       mode of the file	descriptor.  The "x" mode option is ignored.  When the
       stream is closed	via fclose(3), fildes is closed	also.

       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.

       If the path argument is NULL, freopen() attempts	to  re-open  the  file
       associated  with	stream with a new mode.	 The new mode must be compati-
       ble with	the mode that the stream was originally	opened	with:  Streams
       open  for  reading  can only be re-opened for reading, streams open for
       writing can only	be re-opened for writing, and streams open for reading
       and writing can be re-opened in any mode.  The "x" mode option  is  not
       meaningful in this context.

       The primary use of the freopen()	function is to change the file associ-
       ated 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 argument 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 er-
       rors specified for the routines open(2),	fclose(3) and fflush(3).

SEE ALSO
       open(2),	fclose(3), fileno(3), fseek(3),	funopen(3)

STANDARDS
       The fopen()  and	 freopen()  functions  conform	to  ISO/IEC  9899:1990
       ("ISO  C90").   The  fdopen() function conforms to IEEE Std 1003.1-1988
       ("POSIX.1").

FreeBSD	8.3		       October 17, 2011			      FOPEN(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=fopen&sektion=3&manpath=FreeBSD+8.3-RELEASE>

home | help