man-pages/man3p/mkstemp.3p

87 lines
2.6 KiB
Plaintext

.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
.TH "MKSTEMP" 3P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
.\" mkstemp
.SH NAME
mkstemp \- make a unique filename
.SH SYNOPSIS
.LP
\fB#include <stdlib.h>
.br
.sp
int mkstemp(char *\fP\fItemplate\fP\fB); \fP
\fB
.br
\fP
.SH DESCRIPTION
.LP
The \fImkstemp\fP() function shall replace the contents of the string
pointed to by \fItemplate\fP 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 \fItemplate\fP should look like a filename with six trailing
\fB'X'\fP s; \fImkstemp\fP() replaces each \fB'X'\fP 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
\fImkstemp\fP().
.SH RETURN VALUE
.LP
Upon successful completion, \fImkstemp\fP() shall return an open file
descriptor. Otherwise, -1 shall be returned if no
suitable file could be created.
.SH ERRORS
.LP
No errors are defined.
.LP
\fIThe following sections are informative.\fP
.SH EXAMPLES
.SS Generating a Filename
.LP
The following example creates a file with a 10-character name beginning
with the characters \fB"file"\fP and opens the file
for reading and writing. The value returned as the value of \fIfd\fP
is a file descriptor that identifies the file.
.sp
.RS
.nf
\fB#include <stdlib.h>
\&...
char template[] = "/tmp/fileXXXXXX";
int fd;
.sp
fd = mkstemp(template);
\fP
.fi
.RE
.SH APPLICATION USAGE
.LP
It is possible to run out of letters.
.LP
The \fImkstemp\fP() function need not check to determine whether the
filename part of \fItemplate\fP exceeds the maximum
allowable filename length.
.SH RATIONALE
.LP
None.
.SH FUTURE DIRECTIONS
.LP
None.
.SH SEE ALSO
.LP
\fIgetpid\fP() , \fIopen\fP() , \fItmpfile\fP()
, \fItmpnam\fP() , the Base Definitions volume of IEEE\ Std\ 1003.1-2001,
\fI<stdlib.h>\fP
.SH COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
-- Portable Operating System Interface (POSIX), The Open Group Base
Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
Electrical and Electronics Engineers, Inc and The Open Group. In the
event of any discrepancy between this version and the original IEEE and
The Open Group Standard, the original IEEE and The Open Group Standard
is the referee document. The original Standard can be obtained online at
http://www.opengroup.org/unix/online.html .