<brianjohnsonhaskellc...@gmail.com> wrote:

> The second time I press control-c, it isn't caught -- the program exits
> instead.  Why?

I don't know why.  Same behavior on my platform (Haiku.)

While I imagine someone intimately acquainted with RTS signal handling
might be able to explain it, I think the real problem is that
Control.Exception.Catch isn't a real signal handler.  For example,
your program doesn't catch SIGHUP, or SIGALRM, or probably anything but
SIGINT.  The SIGINT handler looks like more of a quirk of the RTS, than
a feature whose behavior you should depend on in great detail.

I can use System.Posix.Signals.installHandler to catch <ctrl>C (SIGINT)
in a repeatable way, on MacOS X, so that's working as it should.  If you
want it to return control to the user interface, that's going to take
some work - for all I know, there may be some way to hook a signal handler
up with Control.Exception.catch.

        Donn

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to