Note too that instead of readavailable, it seems like you want read(io, Uint8)
As an extension of Steven's suggestion, you could use other signals too (eg like how 'kill -SIGINFO' will give you a backtrace) On Wednesday, October 22, 2014, Steven G. Johnson <[email protected]> wrote: > Couldn't you use InterruptExceptions here (ctrl-c handlers), disabling > sigint during the loop body so that the exception only occurs when you are > ready? > > for i in iterations > try > disable_sigint() do > ....do an iteration.... > end > catch e > if isa(e, InterruptException) > ...exit gracefully.... > else > rethrow(e) > end > end > end > > ? This kind of thing has a chance to work in an environment like IJulia > too, whereas reading stdin will never work in a browser interface. > > Unfortunately, the above code may still have a race condition: if the user > hits ctrl-c and the SIGINT signal is received in the loop body but before > try...end then it won't be caught by the catch bock. One way to hack > around this would be to put the disable_sigint() outside the loop, and then > check the C global jl_signal_pending != 0 inside the loop body to see if > a SIGINT was received (but not handled yet). >
