\section{\module{pty} ---
         Pseudo-terminal utilities}
\declaremodule{standard}{pty}
  \platform{IRIX, Linux}
\modulesynopsis{Pseudo-Terminal Handling for SGI and Linux.}
\moduleauthor{Steen Lumholt}{}
\sectionauthor{Moshe Zadka}{moshez@zadka.site.co.il}


The \module{pty} module defines operations for handling the
pseudo-terminal concept: starting another process and being able to
write to and read from its controlling terminal programmatically.

Because pseudo-terminal handling is highly platform dependant, there
is code to do it only for SGI and Linux. (The Linux code is supposed
to work on other platforms, but hasn't been tested yet.)

The \module{pty} module defines the following functions:

\begin{funcdesc}{fork}{}
Fork. Connect the child's controlling terminal to a pseudo-terminal.
Return value is \code{(\var{pid}, \var{fd})}. Note that the child 
gets \var{pid} 0, and the \var{fd} is \emph{invalid}. The parent's
return value is the \var{pid} of the child, and \var{fd} is a file
descriptor connected to the child's controlling terminal (and also
to the child's standard input and output).
\end{funcdesc}

\begin{funcdesc}{openpty}{}
Open a new pseudo-terminal pair, using \function{os.openpty()} if
possible, or emulation code for SGI and generic \UNIX{} systems.
Return a pair of file descriptors \code{(\var{master}, \var{slave})},
for the master and the slave end, respectively.
\end{funcdesc}

\begin{funcdesc}{spawn}{argv\optional{, master_read\optional{, stdin_read}}}
Spawn a process, and connect its controlling terminal with the current 
process's standard io. This is often used to baffle programs which
insist on reading from the controlling terminal.

The functions \var{master_read} and \var{stdin_read} should be
functions which read from a file-descriptor. The defaults try to read
1024 bytes each time they are called.
\end{funcdesc}
