Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
TMPNAM(3)		   Linux Programmer's Manual		     TMPNAM(3)

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

SYNOPSIS
       #include	<stdio.h>

       char *tmpnam(char *s);

DESCRIPTION
       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	gener-
       ated  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  charac-
       ter 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.

ATTRIBUTES
   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.

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  mk-
       stemp(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  from  _stdio.h_,	define
       _SVID_SOURCE or _BSD_SOURCE (before including any header	file).

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

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

COLOPHON
       This  page  is  part of release 3.74 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
       http://www.kernel.org/doc/man-pages/.

				  2014-02-27			     TMPNAM(3)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | ATTRIBUTES | CONFORMING TO | NOTES | BUGS | SEE ALSO | COLOPHON

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=tmpnam&sektion=3&manpath=Debian+8.1.0>

home | help