tmpnam(3S)tmpnam(3S)NAMEtmpnam(), tempnam() - create a name for a temporary file
and generate file names that can safely be used for a temporary file.
Always generates a file name using the path-prefix defined as
in the header file. If s is NULL, leaves its
result in an internal static area and returns a
pointer to that area. The next call to destroys
the contents of the area. If s is not NULL, it
is assumed to be the address of an array of at
least bytes, where is a constant defined in
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.
allows the user to control the choice of a directory.
The argument dir points to the name of the direc‐
tory 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 in the header file is used. If that
directory is not accessible, is used as a last
resort. This entire sequence can be up-staged by
providing an environment variable 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 or a NULL value
must be passed in dir and pfx for or in s for 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 tem‐
uses (see malloc(3C)) to get space for the constructed file name, and
returns a pointer to this area. Thus, any pointer value returned from
can serve as an argument to (see malloc(3C)). If cannot return the
expected result for any reason; i.e., failed, or none of the above men‐
tioned attempts to find an appropriate directory was successful, a NULL
pointer is returned.
and generate a different file name each time they are called, but start
recycling previously used names if called more than times in a single
Files created using these functions and either or (see fopen(3S) and
creat(2)) are temporary only in the sense that they reside in a direc‐
tory 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
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
and the file names are chosen such that duplication by other means is
SEE ALSOcreat(2), unlink(2), malloc(3C), mktemp(3C), fopen(3S), tmpfile(3S),