Bug #3728 » issue3728.patch
| io.c | ||
|---|---|---|
|
* IO.select(read_array
|
||
|
* [, write_array
|
||
|
* [, error_array
|
||
|
* [, timeout]]] )-> array or nil
|
||
|
* [, timeout]]]) -> array or nil
|
||
|
*
|
||
|
* See <code>Kernel#select</code>.
|
||
|
* Calls select(2) system call.
|
||
|
* It monitors given arrays of <code>IO</code> objects, waits one or more
|
||
|
* of <code>IO</code> 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 <code>nil</code>
|
||
|
* if optional <i>timeout</i> value is given and no <code>IO</code> object
|
||
|
* is ready in <i>timeout</i> seconds.
|
||
|
*
|
||
|
* === Parameters
|
||
|
* read_array:: an array of <code>IO</code> objects that wait until ready for read
|
||
|
* write_array:: an array of <code>IO</code> objects that wait until ready for write
|
||
|
* error_array:: an array of <code>IO</code> 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
|
||
|
* }
|
||
|
*
|
||
|
* <em>produces:</em>
|
||
|
*
|
||
|
* ping pong
|
||
|
* ping pong
|
||
|
* ping pong
|
||
|
* (snipped)
|
||
|
* ping
|
||
|
*/
|
||
|
static VALUE
|
||
|
rb_f_select(int argc, VALUE *argv, VALUE obj)
|
||
|
{
|
||
- « Previous
- 1
- 2
- Next »