On 1/4/10, Shay Hawkins <gohegdeh / comcast.net> wrote: > It creates the thread properly, but when the sleep expires and it is > ready to call stdin.puts(), it cannot do anything, because the loop > continued around and it is reading from stderr. However, when it > receives a new set of input from stderr, since the stream is momentarily > being unused, it can then grab the stdin stream and properly input the > old line. Ah, that's right. On windows, there's a special method you have to use instead of select to check if input is available on a pipe. Let's see ..... I believe the method you're looking for is kbhit (or _kbhit maybe? ms likes their underscores...) Check this page on MSDN: http://msdn.microsoft.com/en-us/library/58w7c94c(VS.80).aspx There should be some library somewhere that makes this available to you in rubyland.... Unfortunately, it does mean you have to poll the pipe for available input instead of letting it notify you.