unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-5.10)
Page:
Section:
Apropos / Subsearch:
optional field

mktemp(1)                        User Commands                       mktemp(1)



NAME
       mktemp - make temporary filename

SYNOPSIS
       mktemp [-dtqu] [-p directory] [template]

DESCRIPTION
       The  mktemp utility makes a temporay filename. To do this, mktemp takes
       the specified filename template and overwrites a portion of it to  cre-
       ate a unique filename. See OPERANDS.

       The template is passed to mktemp(3C) for directories or mkstemp(3C) for
       ordinary files.

       If mktemp can successfully generate a unique  filename,  the  file  (or
       directory)  is created with file permissions such that it is only read-
       able and writable by its owner (unless the -u flag is  given)  and  the
       filename is printed to standard output.

       mktemp  allows  shell scripts to safely use temporary files. Tradition-
       ally, many shell scripts take the name of the program with the PID as a
       suffix  and  used  that  as  a  temporary filename. This kind of naming
       scheme is predictable and the race condition it creates is easy for  an
       attacker  to  win. A safer, though still inferior approach is to make a
       temporary directory using the same naming scheme. While this guarantees
       that a temporary file is not subverted, it still allows a simple denial
       of service attack. Use mktemp instead.

OPTIONS
       The following options are supported:

       -d                      Make a directory instead of a file.



       -p directory            Use the specified directory as  a  prefix  when
                               generating  the  temporary filename. The direc-
                               tory is overridden by the user's  TMPDIR  envi-
                               ronment  variable  if  it  is  set.This  option
                               implies the -t flag.



       -q                      Fail silently if an error occurs.This is useful
                               if a script does not want error output to go to
                               standard error.



       -t                      Generate a path rooted in  a  temporary  direc-
                               tory.  This  directory is chosen as follows: If
                               the user's TMPDIR environment variable is  set,
                               the directory contained therein is used. Other-
                               wise, if the -p flag was  given  the  specified
                               directory  is used. If none of the above apply,
                               /tmp is used. In this mode,  the  template  (if
                               specified)  should be a directory component (as
                               opposed to a full path)  and  thus  should  not
                               contain any forward slashes.



       -u                       Operate  in  unsafe  mode.  The  temp  file is
                               unlinked before mktemp exits. This is  slightly
                               better  than mktemp(3C), but still introduces a
                               race condition. Use of this option is  discour-
                               aged.



OPERANDS
       The following operands are supported:

       template                template  can  be any filename with one or more
                               Xs    appended    to    it,     for     example
                               /tmp/tfile.XXXXXX.

                               If  template  is  not  specified,  a default of
                               tmp.XXXXXX is used and the -t flag is implied.



EXAMPLES
       Example 1: Using mktemp

       The following example illustrates a simple use of  mktemp  in  a  sh(1)
       script.  In this example, the script quits if it cannot get a safe tem-
       porary file.

       TMPFILE=`mktemp /tmp/example.XXXXXX`
       if [ -z "$TMPFILE" ]; then exit 1; fi
       echo "program output" >> $TMPFILE

       Example 2: Using mktemp to Support TMPDIR

       The following example uses mktemp to support for a user's TMPDIR  envi-
       ronment variable:

       TMPFILE=`mktemp -t example.XXXXXX`
       if [ -z "$TMPFILE" ]; then exit 1; fi
       echo "program output" >> $TMPFILE

       Example  3:  Using  mktemp Without Specifying the Name of the Temporary
       File

       The following example uses mktemp without specifying the  name  of  the
       temporary file. In this case the -t flag is implied.

       TMPFILE=`mktemp`
       if [ -z "$TMPFILE" ]; then exit 1; fi
       echo "program output" >> $TMPFILE

       Example  4:  Using mktemp with a Default Temporary Directory Other than
       /tmp

       The following example creates the temporary file in  /extra/tmp  unless
       the user's TMPDIR environment variable specifies otherwise:

       TMPFILE=`mktemp -p /extra/tmp example.XXXXX`
       if [ -z "$TMPFILE" ]; then exit 1; fi
       echo "program output" >> $TMPFILE

       Example 5: Using mktemp to Remove a File

       The  following  example attempts to create two temporary files. If cre-
       ation of the second temporary file fails, mktemp removes the first file
       before exiting:

       TMP1=`mktemp -t example.1.XXXXXX`
       if [ -z "$TMP1" ]; then exit 1; fi
       TMP2=`mktemp -t example.2.XXXXXX`
       if [ -z "$TMP2" ]; then
               rm -f $TMP1
               exit 1
       fi

       Example 6: Using mktemp

       The  following  example does not exit if mktemp is unable to create the
       file. That part of the script has been protected.

       TMPFILE=`mktemp -q -t example.XXXXXX`
       if [ ! -z "$TMPFILE" ]
       then
               # Safe to use $TMPFILE in this block
               echo data > $TMPFILE
               ...
               rm -f $TMPFILE
       fi

ENVIRONMENT VARIABLES
       See environ(5) for descriptions of the following environment  variables
       that affect the execution of mktemp with the -t option: TMPDIR.

EXIT STATUS
       The following exit values are returned:

       0        Successful completion.



       1        An error occurred.



ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:


       tab()     allbox;     cw(2.750000i)|    cw(2.750000i)    lw(2.750000i)|
       lw(2.750000i).   ATTRIBUTE  TYPEATTRIBUTE   VALUE   AvailabilitySUNWcsu
       Interface StabilityEvolving


SEE ALSO
       sh(1), mkstemp(3C), mktemp(3C), attributes(5), environ(5)

NOTES
       The  mktemp utility appeared in OpenBSD 2.1. The Solaris implementation
       uses  only  as  many  `Xs'  as  are  significant  for  mktemp(3C)   and
       mkstemp(3C).



SunOS 5.10                        4 Jun 2004                         mktemp(1)