MKSTEMP(3C) Standard C Library Functions MKSTEMP(3C)
NAME
mkstemp, mkstemps, mkostemp, mkostemps, mkdtemp - make a unique file name
from a template and open the file
SYNOPSIS
#include <stdlib.h>
int mkstemp(
char *template);
int mkostemp(
char *template,
int flags);
int mkstemps(
char *template,
int slen);
int mkostemps(
char *template,
int slen,
int flags);
char *mkdtemp(
char *template);
DESCRIPTION
The
mkstemp() function replaces the contents of the string pointed to by
template by a unique file name, and returns 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 file name
with six trailing 'X's;
mkstemp() replaces each 'X' with a character from
the portable file name character set. The characters are chosen such that
the resulting name does not duplicate the name of an existing file.
The
mkstemps() function behaves the same as
mkstemp(), except it permits
a suffix to exist in the template. The template should be of the form
/
tmp/
tmpXXXXXXsuffix. The
slen parameter specifies the length of the
suffix string.
The
mkostemp() and
mkostemps are like their
mkstemp() and
mkstemps() couterparts except that the
flags argument is present and used to
supplement (as a bitwise inclusive-OR) flags to internal
open() calls.
(e.g.
O_SYNC,
O_APPEND, and
O_CLOEXEC).
The
mkdtemp() function makes the same replacement to the template as in
mktemp(3C) and creates the template directory using
mkdir(2), passing a
mode argument of 0700.
RETURN VALUES
Upon successful completion,
mkstemp() returns an open file descriptor.
Otherwise -1 is returned if no suitable file could be created.
ERRORS
The
mkstemp(),
mkstemps(), and
mkdtemp() functions can set
errno to the
same values as
lstat(2).
The
mkstemp() and
mkstemps() functions can set
errno to the same values
as
open(2).
The
mkdtemp() function can set
errno to the same values as
mkdir(2).
USAGE
It is possible to run out of letters.
The
mkstemp() function does not check to determine whether the file name
part of
template exceeds the maximum allowable file name length.
The
tmpfile(3C) function is preferred over this function.
The
mkstemp() function is frequently used to create a temporary file that
will be removed by the application before the application terminates.
The
mkstemp() function has a transitional interface for 64-bit file
offsets. See
lf64(7).
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | See below. |
+--------------------+-----------------+
The
mkstemp() function is Standard. The
mkstemps() and
mkdtemp() functions are Stable.
SEE ALSO
getpid(2),
lstat(2),
mkdir(2),
open(2),
mktemp(3C),
tmpfile(3C),
attributes(7),
lf64(7),
standards(7) April 19, 2013
MKSTEMP(3C)