Create a name for a temporary file


#include <stdio.h>

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


NULL, or the directory to use in the pathname.
NULL, or a prefix to use in the pathname.
Note: If pfx isn't NULL, the string it points to must be no more than 5 bytes long.



Use the -l c option to qcc to link against this library. This library is usually included automatically.


The tempnam() function generates a pathname for use as a temporary file. The pathname is in the directory specified by dir and has the prefix specified in pfx.

Note: POSIX has marked this function as obsolescent; use mkstemp() or tmpfile() instead.

If dir is NULL, the pathname is prefixed with the first accessible directory contained in:

If all of these paths are inaccessible, tempnam() attempts to use /tmp and then the current working directory.

The tempnam() function generates up to TMP_MAX unique file names before it starts to recycle them.


A pointer to the generated file name, which you should deallocate with the free() function when the application no longer needs it, or NULL if an error occurred.


There's insufficient memory available to create the pathname.


POSIX 1003.1 OB XSI. This function is marked as obsolescent, and may be removed from a future version of the standard.

Cancellation point No
Interrupt handler No
Signal handler No
Thread No


The tempnam() functions creates only pathnames; the application must create and remove the files.

It's possible for another thread or process to create a file with the same name between the time the pathname is created and the file is opened.