diff --git a/io.c b/io.c index c1081a7464..474e20b9fa 100644 --- a/io.c +++ b/io.c @@ -908,12 +908,31 @@ io_getc(OpenFile *fptr) * ios.eof => true or false * ios.eof? => true or false * - * Returns true if ios is at end of file. The stream must be - * opened for reading or an IOError will be raised. + * Returns true if ios is at end of file that means + * there are no more data to read. + * The stream must be opened for reading or an IOError will be + * raised. * * f = File.new("testfile") * dummy = f.readlines * f.eof #=> true + * + * If ios is a stream such as pipe or socket, IO#eof? + * blocks until the other end sends some data or closes it. + * + * r, w = IO.pipe + * Thread.new { sleep 1; w.close } + * r.eof? #=> true after 1 second blocking + * + * r, w = IO.pipe + * Thread.new { sleep 1; w.puts "a" } + * r.eof? #=> false after 1 second blocking + * + * r, w = IO.pipe + * r.eof? # blocks forever + * + * Note that IO#eof? reads data to a input buffer. + * So IO#sysread doesn't work with IO#eof?. */ VALUE