I have this long running process which shows output as it goes. I need to listen for a key press, but keep writing out my results. What's the best way to go about this, select() over STDIN in my processing loop? Any tips appreciated. Thanks.
James Edward Gray II
Hmm, I don't appear to be able to select() over STDIN. Now I'm really in need of a good idea... <laughs>
James Edward Gray II
···
On Sep 9, 2004, at 2:23 PM, James Edward Gray II wrote:
What's the best way to go about this, select() over STDIN in my processing loop?
Hi,
> What's the best way to go about this, select() over STDIN in my
> processing loop?
Hmm, I don't appear to be able to select() over STDIN. Now I'm really
in need of a good idea... <laughs>
Which operating system?
On win32... I haven't tried it... they seem to have
provided _kbhit() in <conio.h>... Apparently implemented
in terms of win32 PeekConsoleInput()...
I dunno if it really works...?
But you might be able
to try calling it using ruby/dl...
On *nix, I think if you put the tty into raw mode you should
be able to select on stdin and detect unbuffered keypresses.
Sorry I can't be of more help . .
Regards,
Bill
···
From: "James Edward Gray II" <james@grayproductions.net>
On Sep 9, 2004, at 2:23 PM, James Edward Gray II wrote:
From: "James Edward Gray II" <james@grayproductions.net>
>
> > What's the best way to go about this, select() over STDIN in my
> > processing loop?
>
> Hmm, I don't appear to be able to select() over STDIN. Now I'm really
> in need of a good idea... <laughs>
On win32... I haven't tried it... they seem to have
provided _kbhit() in <conio.h>... Apparently implemented
in terms of win32 PeekConsoleInput()...
Wow it actually seems to work (!)
require 'dl'
=> true
kbhit = Win32API.new("msvcrt", "_kbhit", , 'I')
=> #<Win32API:0x2b84670>
kbhit.call
=> 0
10.times { puts kbhit.call; sleep 1 }
0
0
1 # I hit spacebar here....
1
1
1
1
1
1
1
HTH,
Regards,
Bill
···
From: "Bill Kelly" <billk@cts.com>
> On Sep 9, 2004, at 2:23 PM, James Edward Gray II wrote:
That was the trick I needed. Thank you.
Also thanks to Lennon Day-Reynolds, who made it look good. 
James Edward Gray II
···
On Sep 9, 2004, at 3:42 PM, Bill Kelly wrote:
On *nix, I think if you put the tty into raw mode you should
be able to select on stdin and detect unbuffered keypresses.