NAME
mkstemp — make a
unique filename
SYNOPSIS
int mkstemp(char *template);
DESCRIPTION
The mkstemp () function shall replace the
contents of the string pointed to by template by a unique
filename, and return a file descriptor for the file open for reading and
writing. The function thus prevents any possible race condition between
testing whether the file exists and opening it for use. The string in
template should look like a filename with six trailing
‘X’ s; mkstemp
() replaces each ‘X’ with a character
from the portable filename character set. The characters are chosen such
that the resulting name does not duplicate the name of an existing file at
the time of a call to mkstemp ().
RETURN VALUE
Upon successful completion, mkstemp ()
shall return an open file descriptor. Otherwise, -1 shall be returned if no
suitable file could be created.
ERRORS
No errors are defined.
EXAMPLES
Generating a Filename
The following example creates a file with a 10-character name
beginning with the characters "file" and
opens the file for reading and writing. The value returned as the value of
fd is a file
descriptor that identifies the file.
#include <stdlib.h> ... char template[] = "/tmp/fileXXXXXX"; int fd; fd = mkstemp(template);
APPLICATION USAGE
It is possible to run out of letters.
The mkstemp () function need not check to
determine whether the filename part of template exceeds
the maximum allowable filename length.
RATIONALE
None.
FUTURE DIRECTIONS
None.
SEE ALSO
getpid(3), open(3), tmpfile(3) , tmpnam(3), the Base Definitions volume of IEEE Std 1003.1-2001 (“POSIX.1”), <stdlib.h>
CHANGE HISTORY
First released in Issue 4, Version 2.
Issue 5
Moved from X/OPEN UNIX extension to BASE.
End of informative text. footer end