tempnam - create a name for a temporary file
char *tempnam(const char *dir, const char *pfx);
The tempnam() function returns a pointer to a string that is a valid
filename, and such that a file with this name did not exist when temp-
nam() checked. The filename suffix of the pathname generated will
start with pfx in case pfx is a non-NULL string of at most five bytes.
The directory prefix part of the pathname generated is required to be
`appropriate' (often that at least implies writable). Attempts to find
an appropriate directory go through the following steps: (i) In case
the environment variable TMPDIR exists and contains the name of an
appropriate directory, that is used. (ii) Otherwise, if the dir argument
is non-NULL and appropriate, it is used. (iii) Otherwise,
P_tmpdir (as defined in <stdio.h>) is used when appropriate. (iv)
Finally an implementation-defined directory may be used.
The tempnam() function returns a pointer to a unique temporary filename,
or NULL if a unique name cannot be generated.
ENOMEM Allocation of storage failed.
SUSv2 does not mention the use of TMPDIR; glibc will use it only when
the program is not suid. SVID2 specifies that the directory used under
(iv) is /tmp. SVID2 specifies that the string returned by tempnam()
was allocated using malloc(3) and hence can be freed by free(3).
The tempnam() function generates a different string each time it is
called, up to TMP_MAX (defined in <stdio.h>) times. If it is called
more than TMP_MAX times, the behaviour is implementation defined.
In case the pfx argument has length larger than five, glibc will use
the first five bytes. Upon failure to find a unique name, glibc will
The precise meaning of `appropriate' is undefined; it is unspecified
how accessibility of a directory is determined. Never use this function.
Use tmpfile(3) instead.
SVID 2, BSD 4.3
mktemp(3), mkstemp(3), tmpfile(3), tmpnam(3)
[ Back ]