Process Objects
---------------
A "process object" is a type of Lisp object used to provide a link
between a `physical' process running in the operating system and the
Lisp system. Each process object consists of a number of values
(references to other Lisp objects); these values are used when the
object is used to run a subprocess.
Process objects which aren't currently being used to run a subprocess
store the exit value of the last subprocess which was run on that
object.
- Function: processp object
This function returns true when its argument is a process object.
The programmer-accessible components of a process object are,
"Output stream"
A normal Lisp output stream (Note:Output Streams), all data
which the subprocess outputs to its `stdout' channel is copied to
this output stream. Note:Process I/O.
"Error stream"
A normal Lisp output stream (Note:Output Streams), all data
which the subprocess outputs to its `stderr' channel is copied to
this output stream. Unless explicitly specified error output goes
to the `stdout' stream. Note:Process I/O.
"State change function"
A Lisp function, called each time the state of the subprocess
being run on the object changes. Note:Process States.
"Program name"
The name of the program (a string) to execute when the subprocess
is created.
"Program arguments"
A list of strings defining the arguments which the program executed
is given.
"Directory"
When a subprocess is started its current working directory is set
to the directory named by this component of its process object.
"Connection type"
Asynchronous subprocesses (Note:Asynchronous Processes) use this
component to decide how to connect to the I/O channels of the
subprocess. Current options include pseudo-terminals and pipes.
- Function: make-process #!optional output-stream state-function
directory program args
This functions creates and returns a new process object. _No
subprocess will be started._
The optional arguments are used to define the values of the
components of the new process object, any undefined components
will be set to default or null values.
For each component of a process object two functions exist; one to
read the component's value in a specific process object, the other to
set the component's value.
- Function: process-prog process
Returns the value of the program name component of the process
object PROCESS.
- Function: set-process-prog process prog-name
Sets the value of the program name component of the process object
PROCESS to the string PROG-NAME, then returns PROG-NAME.
- Function: process-args process
Returns the value of the program arguments component of the
process object PROCESS.
- Function: set-process-args process arg-list
Sets the value of the program arguments component of the process
object PROCESS to the list ARG-LIST, then returns ARG-LIST.
- Function: process-dir process
Returns the value of the directory component of the process object
PROCESS.
- Function: set-process-dir process directory
Sets the value of the directory component of the process object
PROCESS to the string DIRECTORY, then returns DIRECTORY.
- Variable: process-environment
This is a list of environment variable definitions, as well as
being used by the `setenv' and `getenv' functions (Note:Environment Variables), it also provides the environment of all
started subprocesses.
(car process-environment)
=> "LOGNAME=john"
- Function: active-processes
Returns a list containing all active (i.e. running or stopped)
process objects.