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

개요

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

tmpnam(3c)

tmpnam(3C)               Standard C Library Functions               tmpnam(3C)

NAME
       tmpnam,  tmpnam_r,  tmpnam_s,  tempnam  - create a name for a temporary
       file

SYNOPSIS
       #include <stdio.h>

       char *tmpnam(char *s);


       char *tmpnam_r(char *s);


       char *tempnam(const char *dir, const char *pfx);


       #define __STDC_WANT_LIB_EXT1__ 1
       #include <stdio.h>

       errno_t tmpnam_s(char *s, rsize_t maxsize);

DESCRIPTION
       These functions generate file names for a temporary file.  While  these
       functions  check that no file currently exists with the generated name,
       they cannot guarantee that no file will be created with that  name  be‐
       tween  the  time  of  their check and the point at which the caller at‐
       tempts to create such a file. Use of mkostemp(3C), mkstemp(3C), or tmp‐
       file(3C) is thus recommended instead of these functions.

   tmpnam()
       The tmpnam() function always generates a file name using the path  pre‐
       fix  defined as P_tmpdir in the <stdio.h> header. The default value for
       P_tmpdir is /var/tmp. If that directory  is  not  accessible,  /tmp  is
       used.  If  s  is  NULL, tmpnam() leaves its result in a thread-specific
       data area and returns a pointer to that area. The next call to tmpnam()
       by the same thread will destroy the contents of the area. If s  is  not
       NULL,  it is assumed to be the address of an array of at least L_tmpnam
       bytes, where L_tmpnam  is  a  constant  defined  through  inclusion  of
       <stdio.h>.  The  tmpnam()  function places its result in that array and
       returns s.

   tmpnam_r()
       The tmpnam_r() function has the same functionality as  tmpnam()  except
       that if s is a null pointer, the function returns NULL.

   tempnam()
       The  tempnam()  function allows the user to control the choice of a di‐
       rectory. The argument dir points to the name of the directory in  which
       the file is to be created. If dir is NULL or points to a string that is
       not  a  name  for  an appropriate directory, the path prefix defined as
       P_tmpdir in the <stdio.h> header is used. If that directory is not  ac‐
       cessible,  /tmp  is used. The environment variable TMPDIR, if set, will
       override the path prefix value.


       Many applications prefer that  temporary  files  have  certain  initial
       character  sequences  in  their  names. The pfx argument may be NULL or
       point to a string of up to five characters to be used  as  the  initial
       characters of the temporary-file name.


       Upon successful completion, tempnam() uses malloc(3C) to allocate space
       for  a string, puts the generated pathname in that space, and returns a
       pointer to it. The pointer is suitable for use in a subsequent call  to
       free().  If  tempnam() cannot return the expected result for any reason
       (for example, malloc() failed), or if none of the  above-mentioned  at‐
       tempts  to find an appropriate directory was successful, a null pointer
       is returned and errno is set to indicate the error.

   tmpnam_s()
       The tmpnam_s() function is part of the C11 bounds  checking  interfaces
       specified in the C11 standard, Annex K. The tmpnam_s() function behaves
       in  a  similar  manner  to the tmpnam() function with additional safety
       checks on the parameters passed. See INCITS/ISO/IEC 9899:2011.


       A  runtime-constraint  violation  (see  runtime_constraint_handler(3C))
       will  be  generated  if  s  is  a null pointer, maxsize is greater than
       RSIZE_MAX, or if the length of the generated temporary  name  including
       the  trailing  NULL is greater than the value of maxsize. If a runtime-
       constraint violation is generated, the temporary file name is not  cre‐
       ated.

ERRORS
       The tempnam() function will fail if:

       ENOMEM    Insufficient storage space is available.



       The tempnam_s() function will fail if:

       EINVAL       NULL pointer is passed


       ERANGE       maxsize  argument  is  not  valid,  that  is, greater than
                    RSIZE_MAX


       EOVERFLOW    Total length of generated string is greater than or  equal
                    to maxsize


USAGE
       These  functions  generate  a  different  file  name each time they are
       called.


       Files created using these functions and either fopen(3C),  open(2),  or
       creat(2)  are  temporary only in the sense that they reside in a direc‐
       tory intended for temporary use, and their names are unique. It is  the
       user's responsibility to remove the file when its use is ended.


       If  called  more  than TMP_MAX (defined in <stdio.h>) times in a single
       process, these functions start recycling previously used names.


       Between the time a file name is created and the file is opened,  it  is
       possible for some other process to create a file with the same name. It
       is  recommended  to use functions such as mkostemp(3C), mkstemp(3C), or
       tmpfile(3C) to avoid this race condition by returning a file  that  has
       been  created  and  opened.  If  it is not possible to use one of those
       functions, then the use of open(2) with O_CREAT|O_EXCL flags is  recom‐
       mended, followed by fdopen(3C) if a stdio stream is required.


       When  using  the C11 Annex K functions, the tmpfile_s() function should
       be used in favor of the tmpnam_s() function to avoid this  race  condi‐
       tion. See INCITS/ISO/IEC 9899:2011.


       The  tmpnam() function is safe to use in multithreaded applications be‐
       cause it employs thread-specific data if it is passed a  NULL  pointer.
       However, its use is discouraged. The tempnam() function is safe in mul‐
       tithreaded applications and should be used instead.

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 below



       The tmpnam(), tmpnam_r(), and tempnam() functions can be used safely in
       multithreaded applications.


       The tmpnam_s() function cannot be used safely in a multithreaded appli‐
       cation due to the runtime constraint handler. For more information, see
       the runtime_constraint_handler(3C) man page.


       See standards(7) for descriptions of the following standards:

       tab()  box;  cw(2.2i) |cw(3.3i) lw(2.2i) |lw(3.3i) INTERFACESAPPLICABLE
       STANDARDS _ tempnam()T{
         POSIX.1-2001 through 2008,
         SUS through SUSv4,
         XPG1 through XPG7

       T} _ tmpnam()T{
         C89 through C11
         POSIX.1-1990 through 2008,
         SUS through SUSv4,
         XPG1 through XPG7

       T} _ tmpnam_r()None _ tmpnam_s()C11 Annex K



       The  tempnam()  and  tmpnam()  functions  are  marked  obsolescent   in
       POSIX.1-2008 & XPG7, and may be removed in future versions.

SEE ALSO
       open(2),   unlink(2),   fopen(3C),  free(3C),  malloc(3C),  mktemp(3C),
       mkostemp(3C), mkstemp(3C), tmpfile(3C),  tmpfile_s(3C),  attributes(7),
       standards(7), runtime_constraint_handler(3C)

HISTORY
       The  tmpnam_s()  function  was  added in Solaris 11.4.0. Solaris 11.4.0
       also removed the requirement to define _REENTRANT before including  the
       header to expose the tempnam_r definition.


       The  tmpnam_r()  function  was added in Solaris 2.2 This definition was
       only exposed in the header if _REENTRANT was defined  before  including
       the <stdio.h> header.


       The  tmpnam() and tempnam() functions have been included in all Sun and
       Oracle releases of Solaris.

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