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() counterparts 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) February 17, 2023 MKSTEMP(3C)