MKTEMP(3)                      Library Routines                      MKTEMP(3)




NAME

       mktemp - make temporary file name (unique)


SYNOPSIS

       #include <unistd.h>

       char * mktemp (char *template);
       int mkstemp (char *template);


DESCRIPTION

       The mktemp function takes the given file name template and overwrites a
       portion of it to create a file name.  This  file  name  is  unique  and
       suitable for use by the application.  The template may be any file name
       with some number of X´s appended to  it,  for  example  /tmp/temp.XXXX.
       The  trailing X´s are replaced with the current process number and/or a
       unique letter combination.  The number of unique file names mktemp  can
       return  depends  on  the number of X´s provided; six X´s will result in
       mktemp testing roughly 26 ** 6 combinations.

       The mkstemp function makes the same replacement  to  the  template  and
       creates  the  template  file,  mode  0600,  returning a file descriptor
       opened for reading and writing.  This avoids the race  between  testing
       for a file's existence and opening it for use.


RETURN VALUES

       The  mktemp  function  returns a pointer to the template on success and
       NULL on failure.  The mkstemp function returns -1 if no  suitable  file
       could  be created.  If either call fails an error code is placed in the
       global variable errno.


ERRORS

       The mktemp and mkstemp functions may set errno to one of the  following
       values:

              ENOTDIR
                     The  pathname  portion of the template is not an existing
                     directory.

       The mktemp and mkstemp functions may also set errno to any value speci‐
       fied by the stat(2) function.

       The  mkstemp  function may also set errno to any value specified by the
       open(2) function.


NOTES

       A common problem that results in a core dump on many  architectures  is
       that  the programmer passes in a read-only string to mktemp or mkstemp.
       This is common with programs that were developed before ANSI/C  compil‐
       ers  were  common.   For  example,  calling mkstemp with an argument of
       /tmp/tempfile.XXXXXX will result in a core dump due to mkstemp attempt‐
       ing  to  modify  the string constant that was given.  If the program in
       question makes heavy use of that type of function call, some  compilers
       have  the  option of compiling the program so that it will store string
       constants in a writable segment of memory (in the data rather than  the
       text  segment).   While  it  is good programming practise to avoid this
       problem, it is not strictly necessary under GNO due to the  lack  of  a
       write-only text segment.


SEE ALSO

       chmod(2), getpid(2), open(2), stat(2)


HISTORY

       A mktemp function appeared in Version 7 AT&T UNIX.



GNO                             27 January 1997                      MKTEMP(3)

Man(1) output converted with man2html