select
select(p1, p2 = v2, p3 = v3, p4 = v4)
public
Calls select(2) system call. It monitors given arrays of IO objects, waits one or more of IO objects ready for reading, are ready for writing, and have pending exceptions respectably, and returns an array that contains arrays of those IO objects. It will return nil if optional timeout value is given and no IO object is ready in timeout seconds.
Parameters
read_array |
an array of IO objects that wait until ready for read |
write_array |
an array of IO objects that wait until ready for write |
error_array |
an array of IO objects that wait for exceptions |
timeout |
a numeric value in second |
Example
rp, wp = IO.pipe mesg = "ping " 100.times { rs, ws, = IO.select([rp], [wp]) if r = rs[0] ret = r.read(5) print ret case ret when /ping/ mesg = "pong\n" when /pong/ mesg = "ping " end end if w = ws[0] w.write(mesg) end }
produces:
ping pong ping pong ping pong (snipped) ping
more info
Look at this link for more info: http://www.rubycentral.com/book/ref_m_kernel.html#Kernel.select