At 10:18 Uhr -0500 03.01.2006, Marc Feeley wrote:
CTRL-C does not generate an exception. It simply calls the current user-interrupt-handler.
Ok, thanks, that makes perfect sense.
Two small followup questions about things I might need in the future:
- can other signals than SIGINT be catched, too? I guess that you haven't added that since it's platform specific. I might write a small C layer for my programs on unix, but then my question is: how do I register an interrupt callback in gambit's runtime (I guess I'll have to save the signal number and values into some global and then let gambit run a callback synchronously at a safe point)?
- maybe it's rather theoretical, but there is probably a time frame between the start of a program and the time when it sets user-interrupt-handler where sending SIGINT still makes the program "hang" in the debugger. Could gambit delay installing of a SIGINT signal handler so that the program behaves in the default way until the user actually installs a handler?(*) That should also be better if gambit is to be embedded in a C program which wants to catch signals itself.
(*) that leads to another question I've been wondering about: parameterize doesn't accept procedures which aren't parameters (it checks their type). This makes the above suggestion impossible to be implement transparently of course, since it would require running code other than just for setting the dynamic value (**). What's the reason for this restriction?
((**) without this, the user would have to run some (user-interrupt-initialize!) hook first -- at least, that might be better for thread safety?)
Thanks Christian.