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

FreeBSD Manual Pages


home | help
tmpnam(3C)		 Standard C Library Functions		    tmpnam(3C)

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

       #include	<stdio.h>

       char *tmpnam(char *s);

       char *tmpnam_r(char *s);

       char *tempnam(const char	*dir, const char *pfx);

       These  functions	generate file names that can be	used safely for	a tem-
       porary file.

       The tmpnam() function always generates a	file name using	the path  pre-
       fix  defined  as	 P_tmpdir in the <stdio.h> header. On Solaris systems,
       the default value for P_tmpdir is  /var/tmp.  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 ad-
       dress of	an array of at least L_tmpnam bytes, where L_tmpnam is a  con-
       stant  defined  through	inclusion of <stdio.h>.	The  tmpnam() function
       places its result in that array and returns s.

       The tmpnam_r() function has the same functionality as  tmpnam()	except
       that if s is a null pointer, the	function returns NULL.

       The  tempnam()  function	allows the user	to control the choice of a di-
       rectory.	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 ac-
       cessible, /tmp is used. If, however, the	TMPDIR environment variable is
       set  in the user's environment, its value is used as the	temporary-file

       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 at-
       tempts to find an appropriate directory was successful, a null  pointer
       is returned and errno is	set to indicate	the error.

       The tempnam() function will fail	if:

       ENOMEM	       Insufficient storage space is available.

       These  functions	 generate  a  different	 file  name each time they are

       Files created using these functions and either  fopen(3C)  or  creat(2)
       are  temporary  only  in	 the sense that	they reside in a directory in-
       tended 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.
       This can	never happen if	that other process is using these functions or
       mktemp(3C) and the file names are chosen	to render duplication by other
       means unlikely.

       The tmpnam() function is	safe to	use in multithreaded applications  be-
       cause  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.

       When compiling multithreaded applications, the  _REENTRANT flag must be
       defined on the compile line.  This flag should be used only with	multi-
       threaded	applications.

       See attributes(5) for descriptions of the following attributes:

       |      ATTRIBUTE	TYPE	     |		ATTRIBUTE VALUE		   |
       |Interface Stability	     |tmpnam() and tempnam() are Standard. |
       |MT-Level		     |Safe				   |

       creat(2),  unlink(2),  fopen(3C), free(3C), malloc(3C), mktemp(3C), mk-
       stemp(3C), tmpfile(3C), attributes(5), standards(5)

SunOS 5.10			  18 May 2004			    tmpnam(3C)


Want to link to this manual page? Use this URL:

home | help