标准Ruby库“io / wait”在IO对象ready?
上提供了一种方法,如果有可用输入则返回非nil,否则返回nil或false。我知道某些方法(例如sysread
和syswrite
)不能安全地用于gets
和read
等更高级别的方法,并且想知道ready?
是否是IO.select
安全地与更高级别的方法混合。 ready方法似乎相当有用,也许比依赖read
更优雅,但令人惊讶的是,我还没有看到它用得太多。 documentation中没有任何内容表明与gets
或{{1}}一起使用会不安全,我只是想确定我没有混合不兼容的方法,最终可能导致意外读/写套接字时的行为。
编辑:我想我应该提到我使用的是Ruby 1.8.7。
答案 0 :(得分:3)
我对Ruby没有很多经验,但我对libc有很多经验,我的意见是肯定的,这是安全的。根据select()或poll()......
实现“就绪”的可能性非常大如果“ready”的行为类似于一个select(),它已经传递了一个带有零的tv_sec和tv_usec的时间值,那么“准备好”的缺点是你将要旋转...你能否超时准备就绪?