TEMPNAM
Section: Linux Programmer's Manual (3)
Updated: 14 June 1999
NAME
tempnam - create a name for a temporary file
SYNOPSIS
#include <stdio.h>
char *tempnam(const char *dir, const char *pfx);
DESCRIPTION
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
tempnam()
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.
RETURN VALUE
The
tempnam()
function returns a pointer to a unique temporary
filename, or NULL if a unique name cannot be generated.
ERRORS
- ENOMEM
-
Allocation of storage failed.
NOTES
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 return EEXIST.
BUGS
The precise meaning of `appropriate' is undefined;
it is unspecified how accessibility of a directory is determined.
Never use this function. Use
mkstemp(3)
instead.
CONFORMING TO
SVID 2, BSD 4.3
SEE ALSO
mktemp(3),
mkstemp(3),
tmpfile(3),
tmpnam(3)