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

개요

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

freopen_s(3c)

freopen(3C)              Standard C Library Functions              freopen(3C)

NAME
       freopen, freopen_s - open a new file for an existing stream

SYNOPSIS
       #include <stdio.h>

       FILE *freopen(const char *restrict filename, const char *restrict mode,
            FILE *restrict 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  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).


       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.


       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   IN‐
       CITS/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 er‐
       ror.


       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  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_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 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. 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 ap‐
       plication due to the runtime constraint handler. For more  information,
       see the runtime_constraint_handler(3C) man page.

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

HISTORY
       The freopen_s() function was added in Oracle Solaris 11.4.0.


       The handling of a null filename in a SUSv3 conforming  application  was
       added in Solaris 10 3/05.


       The freopen() function has been included in all Sun and Oracle releases
       of Solaris.

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