В Windows я видел некоторые несоответствия с IO / wait . Рубин, который я здесь сейчас имею:
ruby 1.9.2p136 (2010-12-25) [i386-mingw32]
В этом случае реализованы оба nread и ready? , но они возвращают ошибочные результаты. В другой версии, которую я использовал готов? все еще был сломан, а nread даже не существовало.
Одна из возможностей - использовать io.stat.size , который сообщает вам количество байтов, доступных для чтения в потоке ввода-вывода.
http://www.ruby -doc.org / ядро / классов / Файл / Stat.html
Документация предполагает, что это для файлов, но я использовал его на каналах, подключенных к отдельному процессу (через Ruby's Open3.popen3). Пока это работает для меня.