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

FreeBSD Manual Pages


home | help
fdopen(3C)							    fdopen(3C)

       fdopen -	associate a stream with	a file descriptor

       #include	<stdio.h>

       FILE *fdopen(int	fildes,	const char *mode);

       The  fdopen()  function	associates  a  stream  with  a file descriptor

       The mode	argument is a character	string having  one  of	the  following

       r or rb		     Open a file for reading.
       w or wb		     Open a file for writing.
       a or ab		     Open  a  file  for	writing	at end of
       r+, rb+ or r+b	     Open a file for update (reading  and
       w+, wb+ or w+b	     Open  a file for update (reading and
       a+, ab+ or a+b	     Open a file for update (reading  and
			     writing) at end of	file.

       The  meaning  of	 these flags is	exactly	as specified for the fopen(3C)
       function, except	that modes beginning with w do not cause truncation of
       the file.

       The  mode  of the stream	must be	allowed	by the file access mode	of the
       open file. The file position indicator associated with the  new	stream
       is set to the position indicated	by the file offset associated with the
       file descriptor.

       The fdopen() function preserves the offset maximum previously  set  for
       the open	file description corresponding to  fildes.

       The  error  and	end-of-file indicators for the stream are cleared. The
       fdopen()	function may cause the st_atime	field of the  underlying  file
       to be marked for	update.

       If  fildes refers to a shared memory object, the	result of the fdopen()
       function	is unspecified.

       Upon successful completion, fdopen() returns a  pointer	to  a  stream.
       Otherwise,  a null pointer is returned and errno	is set to indicate the

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

       The fdopen() function may fail if:

       EBADF	       The fildes argument is not a valid file descriptor.

       EINVAL	       The mode	argument is not	a valid	mode.

       EMFILE	       {FOPEN_MAX}  streams  are currently open	in the calling

		       {STREAM_MAX} streams are	currently open in the  calling

       ENOMEM	       There is	insufficient space to allocate a buffer.

       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.

       File descriptors	are obtained from calls	like open(2), dup(2), creat(2)
       or  pipe(2),  which  open  files	but do not return streams. Streams are
       necessary input for almost all of the standard I/O library functions.

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

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

       creat(2),  dup(2),  open(2),  pipe(2),	fclose(3C),   fopen(3C),   at-
       tributes(5), standards(5)

				  18 May 2005			    fdopen(3C)


Want to link to this manual page? Use this URL:

home | help