freopen(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

freopen(3c)

Standard C Library Functions                                       freopen(3C)



NAME
       freopen - open a stream
       freopen_s - open a stream with additional safety checks

SYNOPSIS
       #include <stdio.h>

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


       #define __STDC_WANT_LIB_EXT1__ 1
       #include <stdio.h>

       errno_t freopen_s(FILE *restrict *restrict newstreamptr,
           const char *restrict filename, const char *restrict mode,
           FILE *restrict stream);

DESCRIPTION
       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  conforms  to  SUSv3
       (see  standards(7)), 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_RDWR.


           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 conform
       to SUSv3, freopen() returns a null pointer.


       The original stream is closed regardless of whether the subsequent open
       succeeds.


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


       The  freopen_s()  function  is  part  of the bounds checking interfaces
       specified in the C11 standard, Annex K. It is similar to the  freopen()
       function  with differing parameters and return type in order to provide
       additional safety checks on the parameters  passed  before  closing  or
       opening    any    files.    See    runtime_constraint_handler(3C)   and
       INCITS/ISO/IEC 9899:2011.


       Implementation-defined features of freopen_s() include the following:

           o      If filename is a null pointer, the changes of mode permitted
                  are the same as those for the freopen() function.


           o      A  runtime-constraint  violation will be generated if either
                  newstreamptr, mode, or stream is a null pointer.


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


       If freopen_s() successfully opens filename, zero is returned. Otherwise
       if  freopen_s() did not open filename or there was a runtime-constraint
       violation, a non-zero value is returned.

ERRORS
       The freopen() and freopen_s() functions 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 conforms 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 conform 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
                       access.


       ELOOP           Too many symbolic links were encountered  in  resolving
                       filename.


       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 will fail if:

       EINVAL          The value of the mode argument is not valid.


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


       ENOMEM          Insufficient storage space is available.


       ENXIO           A request was made of a  non-existent  device,  or  the
                       request 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_s() function will fail if:


       EINVAL    Null pointer is passed.



USAGE
       The freopen() function  is  typically  used  to  attach  the  preopened
       streams  associated  with  stdin,  stdout and stderr to other files. By
       default 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. For more information, see the lf64(7) man page.

ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE  TYPEAT‐
       TRIBUTE  VALUE  _  Interface  StabilityCommitted  _ MT-LevelSee below _
       StandardSee standards(7).



       The freopen() function can be used  safely  in  multithreaded  applica‐
       tions.


       The  freopen_s()  function  cannot  be  used  safely in a multithreaded
       application due to the runtime constraint handler.  For  more  informa‐
       tion, see the runtime_constraint_handler(3C) man page.

SEE ALSO
       fclose(3C),     fdopen(3C),    fopen(3C),    fopen_s(3C),    stdio(3C),
       attributes(7), lf64(7), standards(7), runtime_constraint_handler(3C)



Oracle Solaris 11.4               17 Aug 2018                      freopen(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3