Make a unique temporary filename
#include <stdlib.h> char* mktemp( char* template );
- A template for the filename that you want to use. This template can be any file name with some number of Xs appended to it, for example /tmp/temp.XXXX.
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The mktemp() function takes the given file name template and overwrites a portion of it to create a filename. This file name is unique and suitable for use by the application. The trailing Xs are replaced with the current process number and/or a unique letter combination. The number of unique file names mktemp() can return depends on the number of Xs provided; if you specify six Xs, mktemp() tests roughly 266 combinations.
The mkstemp() function (unlike this function) creates the template file, mode 0600 (i.e. read-write for the owner), returning a file descriptor opened for reading and writing. This avoids the race between testing for a file's existence and opening it for use.
A pointer to the template, or NULL on failure; errno is set.
- The pathname portion of the template isn't an existing directory.
This function may also set errno to any value specified by stat().
In general, avoid using mktemp(), because a hostile process can exploit a race condition in the time between the generation of a temporary filename by mktemp() and the invoker's use of the temporary name. Use mkstemp() instead.
This function can create only 26 unique file names per thread for each unique template.