I'm looking for a method in Ruby which is basically this:
I just want to check whether a given
IO object (in my case, the result of a
popen call) has output available, i.e. a follow up call
io.read(1) will not block.
These are the two options I see, neither of which I like:
io.read_nonblock– too thin an abstraction of Unix
read()— I don't want to deal with
io.selectwith timeout 0 — obfuscates the purpose of this simple operation.
Is there a better alternative that I have overlooked?
A bit late, but if you
require 'io/wait', you can use
ready?to verify that the IO can be read without blocking. Granted, depending upon how much you intend on reading (and how you plan to do it) your IO object may still block, but this should help. I'm not sure if this library is supported on all platforms, and I also don't know why this functionality was separated from the rest of the IO library. See more here: http://ruby-doc.org/stdlib/libdoc/io/wait/rdoc/