TMPNAM(3C)              Standard C Library Functions              TMPNAM(3C)
NAME
       tmpnam, tmpnam_r, tempnam - create a name for a temporary file
SYNOPSIS
       #include <stdio.h>       
char *tmpnam(
char *s);       
char *tmpnam_r(
char *s);       
char *tempnam(
const char *dir, 
const char *pfx);
DESCRIPTION
       These functions generate file names that can be used safely for a
       temporary file.   
tmpnam()       The 
tmpnam() function always generates a file name using the path
       prefix 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 address of an array of at least 
L_tmpnam bytes,
       where 
L_tmpnam is a constant defined through inclusion of <
stdio.h>.
       The  
tmpnam() function places its result in that array and returns 
s.   
tmpnam_r()       The 
tmpnam_r() function has the same functionality as 
tmpnam() except
       that if 
s is a null pointer, the function returns 
NULL.   
tempnam()       The 
tempnam() function allows the user to control the choice of a
       directory. 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 accessible, 
/tmp is used. If, however, the 
TMPDIR       environment variable is set in the user's environment, its value is
       used as the temporary-file directory.
       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 attempts to find an appropriate directory was
       successful, a null pointer is returned and 
errno is set to indicate
       the error.
ERRORS
       The 
tempnam() function will fail if:       
ENOMEM                 Insufficient storage space is available.
USAGE
       These functions generate a different file name each time they are
       called.
       Files created using these functions and either 
fopen(3C) or 
creat(2)       are temporary only in the sense that they reside in a directory
       intended 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
       because it employs thread-specific data if it is passed a NULL
       pointer.  However, its use is discouraged. The 
tempnam() function is
       safe in multithreaded 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
       multithreaded applications.
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+--------------------------------------+
       |  ATTRIBUTE TYPE    |           ATTRIBUTE VALUE            |
       +--------------------+--------------------------------------+
       |Interface Stability | 
tmpnam() and 
tempnam() are Standard. |
       +--------------------+--------------------------------------+
       |MT-Level            | Safe                                 |
       +--------------------+--------------------------------------+
SEE ALSO
       creat(2), 
unlink(2), 
fopen(3C), 
free(3C), 
malloc(3C), 
mkstemp(3C),       
mktemp(3C), 
tmpfile(3C), 
attributes(7), 
standards(7)                                May 18, 2004                      TMPNAM(3C)