Provided by: manpages-dev_4.04-2_all bug


       tmpnam, tmpnam_r - create a name for a temporary file


       #include <stdio.h>

       char *tmpnam(char *s);


       Note: Avoid use of tmpnam(); use mkstemp(3) or tmpfile(3) instead.

       The  tmpnam()  function  returns  a pointer to a string that is a valid
       filename, and such that a file with this name did  not  exist  at  some
       point  in  time, so that naive programmers may think it a suitable name
       for a temporary file.   If  the  argument  s  is  NULL,  this  name  is
       generated  in  an  internal static buffer and may be overwritten by the
       next call to tmpnam().  If s is not NULL, the name  is  copied  to  the
       character  array  (of length at least L_tmpnam) pointed to by s and the
       value s is returned in case of success.

       The pathname that is created, has a directory prefix  P_tmpdir.   (Both
       L_tmpnam  and  P_tmpdir are defined in <stdio.h>, just like the TMP_MAX
       mentioned below.)


       The tmpnam() function returns a pointer to a unique temporary filename,
       or NULL if a unique name cannot be generated.


       No errors are defined.


       For   an   explanation   of   the  terms  used  in  this  section,  see

       │InterfaceAttributeValue                    │
       │tmpnam()   │ Thread safety │ MT-Unsafe race:tmpnam/!s │
       │tmpnam_r() │ Thread safety │ MT-Safe                  │


       SVr4, 4.3BSD, C89, C99, POSIX.1-2001.  POSIX.1-2008 marks  tmpnam()  as


       The  tmpnam()  function  generates  a  different string each time it is
       called, up to TMP_MAX times.  If it is called more than TMP_MAX  times,
       the behavior is implementation defined.

       Although  tmpnam()  generates  names that are difficult to guess, it is
       nevertheless possible that between the time  that  tmpnam()  returns  a
       pathname, and the time that the program opens it, another program might
       create that pathname using open(2), or create it as  a  symbolic  link.
       This  can lead to security holes.  To avoid such possibilities, use the
       open(2)  O_EXCL  flag  to  open  the  pathname.   Or  better  yet,  use
       mkstemp(3) or tmpfile(3).

       Portable applications that use threads cannot call tmpnam() with a NULL
       argument if either _POSIX_THREADS  or  _POSIX_THREAD_SAFE_FUNCTIONS  is

       A POSIX draft proposed to use a function tmpnam_r() defined by

           char *
           tmpnam_r(char *s)
               return s ? tmpnam(s) : NULL;

       apparently  as  a warning not to use NULL.  A few systems implement it.
       To get a glibc prototype  for  this  function  from  <stdio.h>,  define
       _SVID_SOURCE or _BSD_SOURCE (before including any header file).


       Never use this function.  Use mkstemp(3) or tmpfile(3) instead.


       mkstemp(3), mktemp(3), tempnam(3), tmpfile(3)


       This  page  is  part of release 4.04 of the Linux man-pages project.  A
       description of the project, information about reporting bugs,  and  the
       latest     version     of     this    page,    can    be    found    at

                                  2015-03-02                         TMPNAM(3)