tmpnam.3s (2010 09)

t
tmpnam(3S) tmpnam(3S)
NAME
tmpnam( ), tempnam( ) - create a name for a temporary file
SYNOPSIS
#include <stdio.h>
char *tmpnam(char *s);
char *tempnam(const char *dir, const char *pfx);
DESCRIPTION
tmpnam() and tempnam() generate file names that can safely be used for a temporary file.
tmpnam() Always generates a file name using the path-prefix defined as
P_tmpdir in the
<
stdio.h> header file. If s is NULL,
tmpnam() leaves its result in an internal
static area and returns a pointer to that area. The next call to
tmpnam() destroys
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 in
<
stdio.h>; tmpnam() places its result in that array and returns s. For multi-
thread applications, if s is a NULL pointer, the operation is not performed and a
NULL pointer is returned.
tempnam() 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 an appropriate directory name, the path-prefix defined as
P_tmpdir in the <stdio.h> header file is used. If that directory is not accessi-
ble, /tmp is used as a last resort. This entire sequence can be up-staged by provid-
ing an environment variable TMPDIR in the user’s environment, whose value is the
name of the desired temporary-file directory.
In order to request the default behavior for either
tempnam() or tmpnam(), a NULL value must be
passed in dir and pfx for tempnam(),orins for tmpnam(). If valid parameters are not passed in,
behavior is undefined.
Many applications are written such that temporary files have certain initial character sequences in their
names. Use the pfx argument to define a given prefix. The argument can be NULL or point to a string of
up to five characters to be used as the first characters in the temporary-file name.
tempnam() uses malloc() (see malloc (3C)) to get space for the constructed file name, and returns a
pointer to this area. Thus, any pointer value returned from tempnam() can serve as an argument to
free() (see malloc (3C)). If tempnam() cannot return the expected result for any reason; i.e., mal-
loc() failed, or none of the above mentioned attempts to find an appropriate directory was successful, a
NULL pointer is returned.
Notes
tmpnam() and tempnam() generate a different file name each time they are called, but start recycling
previously used names if called more than TMP_MAX times in a single process.
Files created using these functions and either
fopen() or creat() (see fopen (3S) and 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 use unlink (2) to remove the file when it is no longer needed.
WARNINGS
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, and the file names are chosen such that duplication by other means is unlikely.
SEE ALSO
creat(2), unlink(2), malloc(3C), mktemp(3C), fopen(3S), tmpfile(3S), thread_safety(5).
STANDARDS CONFORMANCE
tmpnam(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1, ANSI C
tempnam(): AES, SVID2, SVID3, XPG2, XPG3, XPG4
HP-UX 11i Version 3: September 2010 1 Hewlett-Packard Company 1

Summary of content (2 pages)