select(reads, writes = [], excepts = [], timeout = nil) -> [[IO]] | nil[permalink][rdoc][edit]-
select(2) を実行します。
与えられた入力/出力/例外待ちの IO オブジェクトの中から準備ができたものをそれぞれ配列にして、配列の配列として返します。タイムアウトした時には nil を返します。
- [PARAM]
reads: - 入力待ちする IO オブジェクトの配列を渡します。
- [PARAM]
writes: - 出力待ちする IO オブジェクトの配列を渡します。
- [PARAM]
excepts: - 例外待ちする IO オブジェクトの配列を渡します。
- [PARAM]
timeout: - タイムアウトまでの時間を表す数値または nil を指定します。数値で指定したときの単位は秒です。nil を指定した時には IO がどれかひとつレディ状態になるまで待ち続けます。
- [EXCEPTION]
IOError: - 与えられた IO オブジェクトが閉じられていた時に発生します。
- [EXCEPTION]
Errno::EXXX: - select(2) に失敗した場合に発生します。
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 }[SEE_ALSO] Kernel.#select
- [PARAM]