method
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 |
|
write_array |
|
error_array |
|
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