Make a unique temporary filename
#include <stdlib.h> char* mktemp( char* template );
libc
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).
This function may also set errno to any value specified by stat().
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
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.