Provided by: manpages-dev_2.77-1_all bug


       mkstemp - create a unique temporary file


       #include <stdlib.h>

       int mkstemp(char *template);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       mkstemp(): _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500


       The  mkstemp()  function  generates  a  unique  temporary filename 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
       earlier),  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 open(2) O_EXCL flag,
       guaranteeing that when mkstemp() returns successfully we are  the  only


       On  success,  the mkstemp() function returns the file descriptor of the
       temporary  file.   On  error,  -1  is  returned,  and  errno   is   set


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

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


       4.3BSD, POSIX.1-2001


       The  old  behavior  (creating  a file with mode 0666) may be a security
       risk, especially since other Unix flavors use 0600, and somebody  might
       overlook this detail when porting programs.

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

       The prototype is in <unistd.h> for libc4, libc5, glibc1; glibc2 follows
       POSIX.1 and has the prototype in <stdlib.h>.

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


       mkdtemp(3), mktemp(3), tempnam(3), tmpfile(3), tmpnam(3)


       This  page  is  part of release 2.77 of the Linux man-pages project.  A
       description of the project, and information about reporting  bugs,  can
       be found at