[Openmcl-devel] Changing behavior of terminal interrupt.

Gary Byers gb at clozure.com
Sun Nov 14 19:19:35 UTC 2010

If you just want that interrupt to abruptly terminate the process (without
closing files or otherwise cleaning up after itself), you can get that behavior
by saying:

? (#_signal #$SIGINT #$SIG_DFL) ; restore handling of SIGINT to default

with the caveat that the constant SIG_DFL may or may not be defined.  (Whether
it's defined on a particular platform depends on how it's defined in that
platform's header files and on whether the interface translator could make
sense out of that definition.)

AFAIK, SIG_DFL is always defined as a null pointer (though it may be
"a null pointer to a function that takes an int and returns void"), so
it should always work to say:

? (#_signal #$SIGINT +null-ptr+)

Restoring the previous handler is left as an exercise.

If you're using a relatively recent CCL, you could also use WAIT-FOR-SIGNAL,
which is documented in section 4.14 of the manual.

(defun quit-on-terminal-interrupt ()
   (wait-for-signal #$SIGINT nil) ; wait forever
   (quit))                        ; try for orderly exit

(process-run-function "wait-for-sigint" #'quit-on-terminal-interrupt)

On Sun, 14 Nov 2010, Kaz Kylheku wrote:

> Hi all,
> What's the recommened way to have the terminal interrupt just terminate the 
> process?
> Is there any way to turn that into a condition that can be handled (whereby 
> the handler could do the termination or whatever else?)
> Thanks.
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel

More information about the Openmcl-devel mailing list