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

FreeBSD Manual Pages

  
 
  

home | help
fopen(3C)							     fopen(3C)

NAME
       fopen - open a stream

SYNOPSIS
       #include	<stdio.h>

       FILE *fopen(const char *filename, const char *mode);

       The  fopen()  function  opens  the  file	 whose	pathname is the	string
       pointed to by filename, and associates a	stream with it.

       The argument mode points	to a string beginning with one of the  follow-
       ing sequences:

       r or rb		       Open file for reading.

       w or wb		       Truncate	 to   zero   length or create file for
			       writing.

       a or ab		       Append; open or create file for writing at end-
			       of-file.

       r+ or rb+ or r+b	       Open file for update (reading and writing).

       w+ or wb+ or w+b	       Truncate	 to zero length	or create file for up-
			       date.

       a+ or ab+ or a+b	       Append; open or create file for update, writing
			       at end-of-file.

       The  character  b has no	effect,	but is allowed for ISO C standard con-
       formance	(see standards(5)). Opening a file with	read mode  (r  as  the
       first  character	in the mode argument) fails if the file	does not exist
       or cannot be read.

       Opening a file with append mode (a as the first character in  the  mode
       argument)  causes all subsequent	writes to the file to be forced	to the
       then current end-of-file, regardless of intervening calls to fseek(3C).
       If  two	separate 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	inter-
       mixed in	the file in the	order in which it is written.

       When a file is opened with update mode (+ as the	second or third	 char-
       acter  in the mode argument), both input	and output may be performed on
       the associated stream. However, output must not be directly followed by
       input  without an intervening call to fflush(3C)	or to a	file position-
       ing function ( fseek(3C), fsetpos(3C) or	rewind(3C)),  and  input  must
       not  be	directly  followed  by output without an intervening call to a
       file positioning	function, unless the input operation  encounters  end-
       of-file.

       When opened, a stream is	fully buffered if and only if it can be	deter-
       mined not to refer to an	interactive device. The	error and  end-of-file
       indicators for the stream are cleared.

       If  mode	 is w, a, w+ or	a+ and the file	did not	previously exist, upon
       successful completion,  fopen()	function  will	mark  for  update  the
       st_atime, st_ctime and st_mtime fields of the file and the st_ctime and
       st_mtime	fields of the parent directory.

       If mode is w or w+ and the file did previously exist,  upon  successful
       completion,  fopen()  will  mark	 for  update the st_ctime and st_mtime
       fields of the file.  The	fopen()	function will allocate a file descrip-
       tor as open(2) does.

       The  largest  value  that  can be represented correctly in an object of
       type off_t will be established as the offset maximum in the  open  file
       description.

       Upon  successful	 completion,  fopen()  returns a pointer to the	object
       controlling the stream.	Otherwise, a null pointer is returned and  er-
       rno is set to indicate the error.

       The  fopen()  function  may fail	and not	set errno if there are no free
       stdio streams.

       The fopen() function will fail if:

       EACCES		       Search permission is denied on a	 component  of
			       the  path  prefix,  or  the file	exists and the
			       permissions specified by	mode  are  denied,  or
			       the file	does not exist and write permission is
			       denied for the parent directory of the file  to
			       be created.

       EINTR		       A  signal  was  caught  during the execution of
			       fopen().

       EISDIR		       The named file is a directory and mode requires
			       write access.

       ELOOP		       Too many	symbolic links were encountered	in re-
			       solving path.

       EMFILE		       There are {OPEN_MAX} file descriptors currently
			       open in the calling process.

       ENAMETOOLONG	       The  length of the filename exceeds PATH_MAX or
			       a pathname component is longer than NAME_MAX.

       ENFILE		       The maximum allowable number of files  is  cur-
			       rently open in the system.

       ENOENT		       A component of filename does not	name an	exist-
			       ing file	or filename is an empty	string.

       ENOSPC		       The directory or	file system that would contain
			       the  new	file cannot be expanded, the file does
			       not exist, and it was to	be created.

       ENOTDIR		       A component of the path prefix is not a	direc-
			       tory.

       ENXIO		       The  named file is a character special or block
			       special file, and the  device  associated  with
			       this special file does not exist.

       EOVERFLOW	       The  current  value of the file position	cannot
			       be represented correctly	in an object  of  type
			       fpos_t.

       EROFS		       The named file resides on a read-only file sys-
			       tem and mode requires write access.

       The fopen() function may	fail if:

       EINVAL		       The value of the	mode argument is not valid.

       EMFILE		       {FOPEN_MAX} streams are currently open  in  the
			       calling process.

			       {STREAM_MAX}  streams are currently open	in the
			       calling process.

       ENAMETOOLONG	       Pathname	resolution of a	symbolic link produced
			       an  intermediate	 result	 whose	length exceeds
			       {PATH_MAX}.

       ENOMEM		       Insufficient storage space is available.

       ETXTBSY		       The file	is a pure procedure (shared text) file
			       that  is	being executed and mode	requires write
			       access.

USAGE
       A process is allowed to have at least {FOPEN_MAX} stdio streams open at
       a  time.	For 32-bit applications, however, the underlying ABIs formerly
       required	that no	file descriptor	used to	access the file	 underlying  a
       stdio stream have a value greater than 255. To maintain binary compati-
       bility with earlier  Solaris  releases,	this  limit  still  constrains
       32-bit applications.

       The  fopen() function has a transitional	interface for 64-bit file off-
       sets.  See lf64(5).

       See attributes(5) for descriptions of the following attributes:

       +-----------------------------+-----------------------------+
       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       +-----------------------------+-----------------------------+
       |Interface Stability	     |Standard			   |
       +-----------------------------+-----------------------------+
       |MT-Level		     |MT-Safe			   |
       +-----------------------------+-----------------------------+

       fclose(3C),   fdopen(3C),   fflush(3C),	  freopen(3C),	  fsetpos(3C),
       rewind(3C), attributes(5), lf64(5), standards(5)

				  18 May 2005			     fopen(3C)

NAME | SYNOPSIS | USAGE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=fopen&sektion=3c&manpath=SunOS+5.10>

home | help