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

개요

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

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
       between  the  time  of  their  check  and the point at which the caller
       attempts to create such a file. Use of  mkostemp(3C),  mkstemp(3C),  or
       tmpfile(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
       directory. 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 accessible, /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
       attempts  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
       because 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)



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