Make a unique temporary filename, and open the file
#include <stdlib.h> int mkstemp( char* template );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The mkstemp() 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 mkstemp() can return depends on the number of Xs provided; if you specify six Xs, mkstemp() tests roughly 266 combinations.
The mkstemp() function (unlike mktemp()) 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.
The file descriptor of the temporary file, or -1 if no suitable file could be created; errno is set.
This function may also set errno to any value specified by open() and stat().
Safety: | |
---|---|
Cancellation point | Yes |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
It's possible to run out of letters. The mkstemp() function doesn't check to determine whether the file name part of template exceeds the maximum allowable filename length.
For portability with X/Open standards prior to XPG4v2, use tmpfile() instead.
chmod(). getpid(). mktemp(), open() stat(). tmpfile(), tmpnam()