NAME¶
mkstemp - create a unique temporary file
SYNOPSIS¶
#include <stdlib.h>
int mkstemp(char *template);
DESCRIPTION¶
The mkstemp() function generates a unique temporary file name from
template. The last six characters of template must be XXXXXX and
these are replaced with a string that makes the filename unique. The file is
then created with mode read/write and permissions 0666 (glibc 2.0.6 and
earlier), 0600 (glibc 2.0.7 and later). Since it will be modified,
template must not be a string constant, but should be declared as a
character array. The file is opened with the O_EXCL flag, guaranteeing that
when mkstemp returns successfully we are the only user.
RETURN VALUE¶
The mkstemp() function returns the file descriptor fd of the temporary
file or -1 on error.
ERRORS¶
- EINVAL
- The last six characters of template were not XXXXXX. Now
template is unchanged.
- EEXIST
- Could not create a unique temporary filename. Now the contents of
template are undefined.
BUGS¶
The old behaviour (creating a file with mode 0666) may be a security risk,
especially since other Unix flavours use 0600, and somebody might overlook
this detail when porting programs.
NOTE¶
The prototype is in <unistd.h> for libc4, libc5, glibc1; glibc2
follows the Single Unix Specification and has the prototype in
<stdlib.h>.