mkstemp
MKSTEMP(P)          Linux Programmer's Manual          MKSTEMP(P)



NAME
       mkstemp - create a unique temporary file

SYNOPSIS
       #include <stdlib.h>

       int mkstemp(char *template);

DESCRIPTION
       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 ear-
       lier), 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 user.

RETURN VALUE
       The mkstemp() function returns the file descriptor  fd  of
       the temporary file or -1 on error.

ERRORS
       EINVAL The  last  six  characters  of  template  were  not
              XXXXXX.  Now template is unchanged.

       EEXIST Could not create a unique temporary filename.   Now
              the contents of template are undefined.

NOTES
       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
       programs.

       More generally, the POSIX specification does not say  any-
       thing  about  file  modes,  so the application should make
       sure  its  umask  is  set  appropriately  before   calling
       mkstemp.

CONFORMING TO
       BSD 4.3, POSIX 1003.1-2001

NOTES
       The  prototype  is in <unistd.h> for libc4, libc5, glibc1;
       glibc2 follows the Single Unix Specification and  has  the
       prototype in <stdlib.h>.

       Don't  use  this  function, use tmpfile(e) instead.  It is
       better defined and more portable.

SEE ALSO
       mkdtemp(p), mktemp(p), tmpnam(m), tempnam(m), tmpfile(e)



GNU                         2001-12-23                 MKSTEMP(P)