使用IO.select拖尾文件

时间:2017-04-16 19:59:11

标签: ruby select asynchronous

由于IO.select需要IO对象来查看是否要读取任何内容,因此它通常用于套接字和管道,我发现used to read keypresses。但是,我还没有找到一种方法使它与文件句柄一起使用。如果可以,它可以模仿在shell中运行tail -f

def handle_file str
  puts str
end

file_handle = File.new "test/file"
loop {
  rd, _, _ = IO.select([file_handle])

  case rd[0]
  when file_handle
    handle_file(rd[0].read) # or read_nonblock ?
  end
}

这最终不会输出任何内容并将CPU运行到地面。如果我使用read_nonblock(1024),则回复为EOFError: end of file reached

这可能吗?我应该像文档中的示例一样拯救IO::WaitReadable(我真的不明白,这就是我要问的原因)。

非常感谢任何帮助或见解。

0 个答案:

没有答案