Provided by: manpages-dev_3.54-1ubuntu1_all bug


       tmpnam, tmpnam_r - create a name for a temporary file


       #include <stdio.h>

       char *tmpnam(char *s);


       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.


   Multithreading (see pthreads(7))
       The tmpnam() function is thread-safe with exceptions.  It is  not  thread-safe  if  called
       with a NULL parameter.

       The tmpnam_r() function is thread-safe.


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


       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

       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 3.54 of the Linux man-pages project.  A description of the
       project,    and    information    about    reporting    bugs,    can    be    found     at

                                            2013-06-21                                  TMPNAM(3)