Linux heracles.o2switch.net 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
/
opt
/
alt
/
ruby21
/
share
/
ri
/
2.1.0
/
system
/
IO
/
//opt/alt/ruby21/share/ri/2.1.0/system/IO/read_nonblock-i.ri
U:RDoc::AnyMethod[iI"read_nonblock:ETI"IO#read_nonblock;TF:publico:RDoc::Markup::Document:@parts[o:RDoc::Markup::Paragraph; [I"?Reads at most <i>maxlen</i> bytes from <em>ios</em> using ;TI"9the read(2) system call after O_NONBLOCK is set for ;TI"$the underlying file descriptor.;To:RDoc::Markup::BlankLine o; ; [ I"8If the optional <i>outbuf</i> argument is present, ;TI">it must reference a String, which will receive the data. ;TI"QThe <i>outbuf</i> will contain only the received data after the method call ;TI".even if it is not empty at the beginning.;T@o; ; [I"7read_nonblock just calls the read(2) system call. ;TI"aIt causes all errors the read(2) system call causes: Errno::EWOULDBLOCK, Errno::EINTR, etc. ;TI"(The caller should care such errors.;T@o; ; [I"=If the exception is Errno::EWOULDBLOCK or Errno::AGAIN, ;TI")it is extended by IO::WaitReadable. ;TI"YSo IO::WaitReadable can be used to rescue the exceptions for retrying read_nonblock.;T@o; ; [I"*read_nonblock causes EOFError on EOF.;T@o; ; [I"+If the read byte buffer is not empty, ;TI";read_nonblock reads from the buffer like readpartial. ;TI"9In this case, the read(2) system call is not called.;T@o; ; [ I"FWhen read_nonblock raises an exception kind of IO::WaitReadable, ;TI"(read_nonblock should not be called ;TI"2until io is readable for avoiding busy loop. ;TI"!This can be done as follows.;T@o:RDoc::Markup::Verbatim; [I"-# emulates blocking read (readpartial). ;TI"begin ;TI") result = io.read_nonblock(maxlen) ;TI"rescue IO::WaitReadable ;TI" IO.select([io]) ;TI" retry ;TI" end ;T:@format0o; ; [ I"?Although IO#read_nonblock doesn't raise IO::WaitWritable. ;TI"BOpenSSL::Buffering#read_nonblock can raise IO::WaitWritable. ;TI"3If IO and SSL should be used polymorphically, ;TI"-IO::WaitWritable should be rescued too. ;TI"JSee the document of OpenSSL::Buffering#read_nonblock for sample code.;T@o; ; [I"7Note that this method is identical to readpartial ;TI")except the non-blocking flag is set.;T: @fileI" io.c;T:0@omit_headings_from_table_of_contents_below0I"gios.read_nonblock(maxlen) -> string ios.read_nonblock(maxlen, outbuf) -> outbuf ;T0[ I"(p1, p2 = v2, p3 = {});T@CFI"IO;TcRDoc::NormalClass00