\section{Standard Module \sectcode{tempfile}}
\stmodindex{tempfile}
\indexii{temporary}{file name}
\indexii{temporary}{file}

\renewcommand{\indexsubitem}{(in module tempfile)}

This module generates temporary file names.  It is not \UNIX{} specific,
but it may require some help on non-\UNIX{} systems.

Note: the modules does not create temporary files, nor does it
automatically remove them when the current process exits or dies.

The module defines a single user-callable function:

\begin{funcdesc}{mktemp}{}
Return a unique temporary filename.  This is an absolute pathname of a
file that does not exist at the time the call is made.  No two calls
will return the same filename.
\end{funcdesc}

The module uses two global variables that tell it how to construct a
temporary name.  The caller may assign values to them; by default they
are initialized at the first call to \code{mktemp()}.

\begin{datadesc}{tempdir}
When set to a value other than \code{None}, this variable defines the
directory in which filenames returned by \code{mktemp()} reside.  The
default is taken from the environment variable \code{TMPDIR}; if this
is not set, either \code{/usr/tmp} is used (on \UNIX{}), or the current
working directory (all other systems).  No check is made to see
whether its value is valid.
\end{datadesc}
\ttindex{TMPDIR}

\begin{datadesc}{template}
When set to a value other than \code{None}, this variable defines the
prefix of the final component of the filenames returned by
\code{mktemp()}.  A string of decimal digits is added to generate
unique filenames.  The default is either ``\code{@\var{pid}.}'' where
\var{pid} is the current process ID (on \UNIX{}), or ``\code{tmp}'' (all
other systems).
\end{datadesc}

Warning: if a \UNIX{} process uses \code{mktemp()}, then calls
\code{fork()} and both parent and child continue to use
\code{mktemp()}, the processes will generate conflicting temporary
names.  To resolve this, the child process should assign \code{None}
to \code{template}, to force recomputing the default on the next call
to \code{mktemp()}.
