I'm writing a console application with an input loop like the following:
while running
keyhit = select( [$stdin], nil, nil, 0.1 )
if keyhit
c = $stdin.getc
session.message(c.chr)
end
end
In the cygwin version of Ruby all is fine. The user hits a key select() indicates it and the character is gotten with $stdin.getc.
However I ran this under the msvc version of windows and what happens is select() returns a ready state for $stdin whether a key is hit or not. Then getc() blocks? because there's nothing yet to be gotten. Worse no I/O seems to be going on until the user hits the return key and then whammo I see either the end result of the loops or it appears more likely getc blocks internally under cover until it sees a CR in the stream.
Is there a workaround?
Thanks
···
--
J Lambert