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.
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
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
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
with-enabled-interrupts to temporarily establish a
enable-interrupt returns the old function associated with the
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.