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

FreeBSD Manual Pages


home | help
freopen(3C)		 Standard C Library Functions		   freopen(3C)

       freopen - open a	stream

       #include	<stdio.h>

       FILE *freopen(const char	*filename, const char *mode, FILE *stream);

       The freopen() function first attempts to	flush the stream and close any
       file descriptor associated with stream. Failure to flush	or  close  the
       file  successfully is ignored. The error	and end-of-file	indicators for
       the stream are cleared.

       The freopen() function opens the	file  whose  pathname  is  the	string
       pointed	to  by filename	and associates the stream pointed to by	stream
       with it.	The mode argument is used just as in fopen(3C).

       If filename is a	null pointer and the  application  comforms  to	 SUSv3
       (see  standards(5)), the	freopen() function attempts to change the mode
       of the stream to	that specified by mode,	as though the name of the file
       currently  associated  with  the	 stream	 had been used.	 The following
       changes of mode are permitted, depending	upon the access	 mode  of  the
       file descriptor underlying the stream:

	 o  When + is specified, the file descriptor mode must be O_RDWR.

	 o  When  r is specified, the file descriptor mode must	be O_RDONLY or

	 o  When a or w	 is  specified,	 the  file  descriptor	mode  must  be
	    O_WRONLY or	O_RDWR.

       If  the filename	is a null pointer and the application does not comform
       to SUSv3, freopen() returns a null pointer.

       The original stream is closed regardless	of whether the subsequent open

       After  a	 successful call to the	freopen() function, the	orientation of
       the stream is cleared, the encoding rule	is cleared, and	the associated
       mbstate_t object	is set to describe an initial conversion state.

       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

       Upon successful completion, freopen() returns the value of stream. Oth-
       erwise, a null pointer is returned and errno is set to indicate the er-

       The freopen() function will fail	if:

       EACCES	       Search  permission is denied on a component of the path
		       prefix, or the file exists and the  permissions	speci-
		       fied 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.

       EBADF	       The  application	 comforms to SUSv3, the	filename argu-
		       ment is a null pointer, and either the underlying  file
		       descriptor  is not valid	or the mode specified when the
		       underlying file descriptor was opened does not  support
		       the file	access modes requested by the mode argument.

       EFAULT	       The application does not	comform	to SUSv3 and the file-
		       name argument is	a null pointer.

       EINTR	       A signal	was caught during freopen().

       EISDIR	       The named file is a directory and mode  requires	 write

       ELOOP	       Too  many  symbolic links were encountered in resolving

       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	currently open
		       in the system.

       ENOENT	       A  component of filename	does not name an existing 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 directory.

       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	repre-
		       sented correctly	in an object of	type off_t.

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

       The freopen() function may fail if:

       EINVAL	       The value of the	mode argument is not valid.

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

       ENOMEM	       Insufficient storage space is available.

       ENXIO	       A request was made of a non-existent device, or the re-
		       quest was outside the capabilities of the device.

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

       The  freopen()  function	 is  typically	used  to  attach the preopened
       streams associated with stdin, stdout and stderr	to other files.	By de-
       fault  stderr  is unbuffered, but the use of freopen() will cause it to
       become buffered or line-buffered.

       The freopen() function has a transitional  interface  for  64-bit  file
       offsets.	 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),	 fopen(3C), stdio(3C), attributes(5), lf64(5),

SunOS 5.10			  24 Jul 2002			   freopen(3C)


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

home | help