mkstemp - create a unique temporary file
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
The mkstemp() function returns the file descriptor fd
of the temporary file or -1 on error.
The last six characters of template were not XXXXXX.
Now template is unchanged.
Could not create a unique temporary filename. Now the
contents of template are undefined.
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
Don't use this function, use tmpfile(3) instead. It's
better defined and more portable.
BSD 4.3, SUSv2
The prototype is in for libc4,
libc5, glibc1; glibc2 follows the Single Unix Specification
and has the prototype in
mktemp(3), tmpnam(3), tempnam(3),