Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > T


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


tmpnam(), tempnam() — create a name for a temporary file


#include <stdio.h>

char *tmpnam(char *s);

char *tempnam(const char *dir, const char *pfx);


tmpnam() and tempnam() generate file names that can safely be used for a temporary file.


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.


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 accessible, /tmp is used as a last resort. This entire sequence can be up-staged by providing 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(), or in s 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., malloc() failed, or none of the above mentioned attempts to find an appropriate directory was successful, a NULL pointer is returned.


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.


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.


tmpnam(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1, ANSI C

tempnam(): AES, SVID2, SVID3, XPG2, XPG3, XPG4

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.