Home
March 22, 2010 12:27:52 AM EST
home
back print
TMPNAM   (3) manpage
TMPNAM
3
2008-08-06
Linux Programmer's Manual
  • NAME
      tmpnam, tmpnam_r - create a name for a temporary file
  • SYNOPSIS
      
       #include <stdio.h>
      
       char *tmpnam(char * s );
      
  • DESCRIPTION
      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.)
  • RETURN VALUE
      The
      tmpnam ()
      function returns a pointer to a unique temporary
      filename, or NULL if a unique name cannot be generated.
  • ERRORS
      No errors are defined.
  • CONFORMING TO
      SVr4, 4.3BSD, C89, C99, POSIX.1-2001.
      POSIX.1-2008 marks
      tmpnam ()
      as obsolete.
  • NOTES
      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 defined.

      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,
      define
      _SVID_SOURCE or
      _BSD_SOURCE before including
      <stdio.h> .
  • BUGS
  • SEE ALSO
  • COLOPHON
      This page is part of release 3.19 of the Linux
      man-pages
      project.
      A description of the project,
      and information about reporting bugs,
      can be found at
      http://www.kernel.org/doc/man-pages/.


Current Users: 120 © 1999-2009 PenguinSoft. All trademarks and copyrights on this page are owned by their respective companies. Linux is a trademark of Linus Torvalds.