Form to run when process terminates.
An integer in the inclusive range [-1000000, 1000000]
.
A boolean.
A mp:process
object.
The function ensure-process-cleanup
ensures that the cleanup-form is present for the process process. When process terminates, its cleanup forms are run. Cleanup forms can be functions of one argument (the process), or lists, in which case the cl:car
is applied to the process and the cl:cdr
of the list.
process is the process to watch for termination. By default, this is the value returned by get-current-process.
priority determines the execution order of the forms. Higher priority means later execution. The system uses values between 700000 and 900000 for cleanups that need to be last, and 0 for other cleanups. The default value of priority is 0.
force determines what to do if the same cleanup is already registered but with a different priority. When adding cleanup forms, ensure-process-cleanup
uses cl:equal
to ensure that the form is only added once. If a cleanup already exists with the same priority, ensure-process-cleanup
just returns nil
, otherwise it acts according to force: if force is nil
it invokes an error, but if force is t
then ensure-process-cleanup
removes the old entry before adding the new entry. The default value of force is nil
.
ensure-process-cleanup
can also be called like this:
(ensure-process-cleanup cleanup-form process)
Such calls are still allowed, for backwards compatibility, however please update your programs to call it like this:
(ensure-process-cleanup cleanup-form
:priority priority
:force force
:process process )
A process calls add-process-dependent
each time a dependent object is added to a process. When the process terminates, inform-dependent-of-dead-process
is called on all dependent objects.
(defun add-process-dependent (dependent)
(mp:ensure-process-cleanup
`(delete-process-dependent ,dependent)))
(defun delete-process-dependent (process dependent)
(inform-dependent-of-dead-process dependent process))
LispWorks User Guide and Reference Manual - 13 Feb 2015