I like the idea of an interrupt handling mechanism. What do you see that would make the signal/libc approach unreliable?
On Tuesday, 17 June 2014 12:18:11 UTC-3, Stefan Karpinski wrote: > > That is very unlikely to be reliable, but it's cool that it works. I think > that we probably should change SIGINT from raising a normal error to > triggering some kind of interrupt handling mechanism (which can in turn > raise an error by default). > > > On Tue, Jun 17, 2014 at 10:41 AM, Stephen Chisholm <sbchi...@gmail.com > <javascript:>> wrote: > >> I'm able to register a callback function using signal in libc, see the >> code below. >> >> SIGINT=2 >> >> function catch_function(x) >> println("caught signal $x") >> exit(0)::Nothing >> end >> catch_function_c = cfunction(catch_function, None, (Int64,)) >> ccall((:signal, "libc"), Void, (Int64, Ptr{Void}), SIGINT, >> catch_function_c) >> >> while true >> sleep(1) >> end >> >> >> >> On Tuesday, 17 June 2014 09:24:43 UTC-3, Stephen Chisholm wrote: >>> >>> I'm able to catch the InterruptException with the code below when >>> running in the REPL, but it doesn't seem to get thrown when running the >>> code in a script. >>> >>> while true >>> try sleep(1) >>> println("running...") >>> catch err >>> println("error: $err") >>> end >>> end >>> >>> >>> On Monday, 16 June 2014 18:30:36 UTC-3, Ivar Nesje wrote: >>>> >>>> SIGINT gets converted to a InterruptException, that can be caught in a >>>> catch statement. If you happened to be in a ccall, you might cause your >>>> program to be in a corrupt state and leak resources such as memory. >>>> >>>> I'm not sure how you can interact with other signals. >>>> >>> >