Man Linux: Main Page and Category List

NAME

       mkstemp - make a unique filename

SYNOPSIS

       #include <stdlib.h>

       int mkstemp(char *template);

DESCRIPTION

       The mkstemp() function shall replace the contents of the string pointed
       to by template 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 template should look like a filename
       with six trailing ’X’ s; mkstemp() replaces each ’X’ 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 mkstemp().

RETURN VALUE

       Upon  successful  completion,  mkstemp()  shall  return  an  open  file
       descriptor. Otherwise, -1 shall be returned if no suitable  file  could
       be created.

ERRORS

       No errors are defined.

       The following sections are informative.

EXAMPLES

   Generating a Filename
       The following example creates a file with a 10-character name beginning
       with the characters "file" and opens the file for reading and  writing.
       The  value  returned  as  the  value  of  fd  is a file descriptor that
       identifies the file.

              #include <stdlib.h>
              ...
              char template[] = "/tmp/fileXXXXXX";
              int fd;

              fd = mkstemp(template);

APPLICATION USAGE

       It is possible to run out of letters.

       The mkstemp() function need not check to determine whether the filename
       part of template exceeds the maximum allowable filename length.

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       getpid()  , open() , tmpfile() , tmpnam() , the Base Definitions volume
       of IEEE Std 1003.1-2001, <stdlib.h>

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 .