mkstemp, mkostemp, mkstemps, mkostemps - create a unique temporary file


   #include <stdlib.h>

   int mkstemp(char *template);

   int mkostemp(char *template, int flags);

   int mkstemps(char *template, int suffixlen);

   int mkostemps(char *template, int suffixlen, int flags);

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

       _XOPEN_SOURCE >= 500
           || /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
           || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

   mkostemp(): _GNU_SOURCE
       /* Glibc since 2.19: */ _DEFAULT_SOURCE
           || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
   mkostemps(): _GNU_SOURCE


   The  mkstemp()  function  generates  a  unique  temporary filename from
   template, creates  and  opens  the  file,  and  returns  an  open  file
   descriptor for the file.

   The  last  six  characters  of  template must be "XXXXXX" and these are
   replaced with a string that makes the filename unique.  Since  it  will
   be  modified,  template  must  not  be a string constant, but should be
   declared as a character array.

   The file is created with permissions 0600, that is, read plus write for
   owner  only.  The returned file descriptor provides both read and write
   access to the file.  The file is opened with the open(2)  O_EXCL  flag,
   guaranteeing that the caller is the process that creates the file.

   The mkostemp() function is like mkstemp(), with the difference that the
   following bits—with the same meaning as for open(2)—may be specified in
   flags:  O_APPEND,  O_CLOEXEC,  and O_SYNC.  Note that when creating the
   file, mkostemp() includes the values O_RDWR, O_CREAT, and O_EXCL in the
   flags  argument  given  to open(2); including these values in the flags
   argument given to mkostemp() is unnecessary,  and  produces  errors  on
   some systems.

   The  mkstemps()  function  is like mkstemp(), except that the string in
   template contains a suffix of suffixlen characters.  Thus, template  is
   of  the  form  prefixXXXXXXsuffix, and the string XXXXXX is modified as
   for mkstemp().

   The  mkostemps()  function  is  to  mkstemps()  as  mkostemp()  is   to


   On success, these functions return the file descriptor of the temporary
   file.  On error, -1 is returned, and errno is set appropriately.


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

   EINVAL For  mkstemp()  and  mkostemp():  The  last  six  characters  of
          template were not XXXXXX; now template is unchanged.

          For mkstemps() and mkostemps():  template  is  less  than  (6  +
          suffixlen)  characters long, or the last 6 characters before the
          suffix in template were not XXXXXX.

   These functions may also fail with any  of  the  errors  described  for


   mkostemp()  is  available  since glibc 2.7.  mkstemps() and mkostemps()
   are available since glibc 2.11.


   For  an  explanation  of  the  terms  used   in   this   section,   see

   │InterfaceAttributeValue   │
   │mkstemp(), mkostemp(),  │ Thread safety │ MT-Safe │
   │mkstemps(), mkostemps() │               │         │


   mkstemp(): 4.3BSD, POSIX.1-2001.

   mkstemps(): unstandardized, but appears on several other systems.

   mkostemp() and mkostemps(): are glibc extensions.


   In   glibc  versions  2.06  and  earlier,  the  file  is  created  with
   permissions 0666, that is, read and write  for  all  users.   This  old
   behavior  may  be  a security risk, especially since other UNIX flavors
   use  0600,  and  somebody  might  overlook  this  detail  when  porting
   programs.   POSIX.1-2008  adds  a  requirement that the file be created
   with mode 0600.

   More generally, the POSIX  specification  of  mkstemp()  does  not  say
   anything about file modes, so the application should make sure its file
   mode creation mask (see umask(2)) is set appropriately  before  calling
   mkstemp() (and mkostemp()).


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


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


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.

Free Software

Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.

Free Books

The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.