summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-09-05 15:02:10 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-09-05 15:02:10 +0000
commitd97f060c6a5577f65a0cbe08cdadd2624633fb5d (patch)
tree5defe186fded06b9d17a24d887e9147c1d227119
parent71c9c4128185499ce2684e08c296c5969c2816e8 (diff)
document a blocking behavior of IO#eof?.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9084 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--io.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/io.c b/io.c
index c70102904b..6d5b4f9920 100644
--- a/io.c
+++ b/io.c
@@ -755,13 +755,32 @@ rb_io_rewind(io)
* call-seq:
* ios.eof => true or false
* ios.eof? => true or false
- *
- * Returns true if <em>ios</em> is at end of file. The stream must be
- * opened for reading or an <code>IOError</code> will be raised.
- *
+ *
+ * Returns true if <em>ios</em> is at end of file that means
+ * there are no more data to read.
+ * The stream must be opened for reading or an <code>IOError</code> will be
+ * raised.
+ *
* f = File.new("testfile")
* dummy = f.readlines
* f.eof #=> true
+ *
+ * If <em>ios</em> is a stream such as pipe or socket, <code>IO#eof?</code>
+ * 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 <code>IO#eof?</code> reads data to a input buffer.
+ * So <code>IO#sysread</code> doesn't work with <code>IO#eof?</code>.
*/
VALUE