Next: Examples of Signal Handlers, Up: Unix Signals [Contents][Index]
This macro should be called with a list of signal specifications,
specs. Each element of specs should be a list of
two elements: the first should be the Unix signal
for which a handler should be established, the second should be a
function to be called when the signal is received One or more signal handlers can be
established in this way. with-enabled-interrupts
establishes
the correct signal handlers and then executes the forms in
body. The forms are executed in an unwind-protect so that the
state of the signal handlers will be restored to what it was before
the with-enabled-interrupts
was entered. A signal handler
function specified as NIL will set the Unix signal handler to the
default which is normally either to ignore the signal or to cause a
core dump depending on the particular signal.
It is sometimes necessary to execute a piece a code that can not be interrupted. This macro the forms in body with interrupts disabled. Note that the Unix interrupts are not actually disabled, rather they are queued until after body has finished executing.
When executing an interrupt handler, the system disables interrupts,
as if the handler was wrapped in in a without-interrupts
.
The macro with-interrupts
can be used to enable interrupts
while the forms in body are evaluated. This is useful if
body is going to enter a break loop or do some long
computation that might need to be interrupted.
For some interrupts, such as SIGTSTP (suspend the Lisp process and return to the Unix shell) it is necessary to leave Hemlock and then return to it. This macro executes the forms in body after exiting Hemlock. When body has been executed, control is returned to Hemlock.
This function establishes function as the handler for signal.
Unless you want to establish a global signal handler, you should use
the macro with-enabled-interrupts
to temporarily establish a
signal handler.
enable-interrupt
returns the old function associated with the
signal.
Ignore-interrupt sets the Unix signal mechanism to ignore
signal which means that the Lisp process will never see the
signal. Ignore-interrupt returns the old function associated with
the signal or nil
if none is currently defined.
Default-interrupt can be used to tell the Unix signal mechanism to perform the default action for signal. For details on what the default action for a signal is, see section 2 of the Unix Programmer’s Manual. In general, it is likely to ignore the signal or to cause a core dump.
Next: Examples of Signal Handlers, Up: Unix Signals [Contents][Index]