mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[DOC] Enhanced RDOc for IO (#6642)
In io.c treats: #close #close_read #close_write #closed
This commit is contained in:
parent
572cd10a86
commit
91c28ab2ee
Notes:
git
2022-10-29 19:47:41 +00:00
Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2 changed files with 89 additions and 31 deletions
|
@ -189,14 +189,13 @@ The relevant methods:
|
|||
|
||||
A new \IO stream may be open for reading, open for writing, or both.
|
||||
|
||||
You can close a stream using these methods:
|
||||
A stream is automatically closed when claimed by the garbage collector.
|
||||
|
||||
Attempted reading or writing on a closed stream raises an exception.
|
||||
|
||||
- IO#close: Closes the stream for both reading and writing.
|
||||
- IO#close_read (not in \ARGF): Closes the stream for reading.
|
||||
- IO#close_write (not in \ARGF): Closes the stream for writing.
|
||||
|
||||
You can query whether a stream is closed using this method:
|
||||
|
||||
- IO#close_read: Closes the stream for reading; not in ARGF.
|
||||
- IO#close_write: Closes the stream for writing; not in ARGF.
|
||||
- IO#closed?: Returns whether the stream is closed.
|
||||
|
||||
==== End-of-Stream
|
||||
|
|
109
io.c
109
io.c
|
@ -5637,13 +5637,31 @@ rb_io_close(VALUE io)
|
|||
* call-seq:
|
||||
* close -> nil
|
||||
*
|
||||
* Closes the stream, if it is open, after flushing any buffered writes
|
||||
* to the operating system; does nothing if the stream is already closed.
|
||||
* A stream is automatically closed when claimed by the garbage collector.
|
||||
* Closes the stream for both reading and writing
|
||||
* if open for either or both; returns +nil+.
|
||||
*
|
||||
* If the stream was opened by IO.popen, #close sets global variable <tt>$?</tt>.
|
||||
* If the stream is open for writing, flushes any buffered writes
|
||||
* to the operating system before closing.
|
||||
*
|
||||
* See also {Open and Closed Streams}[rdoc-ref:io_streams.rdoc@Open+and+Closed+Streams].
|
||||
* If the stream was opened by IO.popen, sets global variable <tt>$?</tt>
|
||||
* (child exit status).
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* IO.popen('ruby', 'r+') do |pipe|
|
||||
* puts pipe.closed?
|
||||
* pipe.close
|
||||
* puts $?
|
||||
* puts pipe.closed?
|
||||
* end
|
||||
*
|
||||
* Output:
|
||||
*
|
||||
* false
|
||||
* pid 13760 exit 0
|
||||
* true
|
||||
*
|
||||
* Related: IO#close_read, IO#close_write, IO#closed?.
|
||||
*/
|
||||
|
||||
static VALUE
|
||||
|
@ -5694,17 +5712,23 @@ io_close(VALUE io)
|
|||
* Returns +true+ if the stream is closed for both reading and writing,
|
||||
* +false+ otherwise:
|
||||
*
|
||||
* f = File.new('t.txt')
|
||||
* f.close # => nil
|
||||
* f.closed? # => true
|
||||
* f = IO.popen('/bin/sh','r+')
|
||||
* f.close_write # => nil
|
||||
* f.closed? # => false
|
||||
* f.close_read # => nil
|
||||
* f.closed? # => true
|
||||
* IO.popen('ruby', 'r+') do |pipe|
|
||||
* puts pipe.closed?
|
||||
* pipe.close_read
|
||||
* puts pipe.closed?
|
||||
* pipe.close_write
|
||||
* puts pipe.closed?
|
||||
* end
|
||||
*
|
||||
* Output:
|
||||
*
|
||||
* false
|
||||
* false
|
||||
* true
|
||||
*
|
||||
* See also {Open and Closed Streams}[rdoc-ref:io_streams.rdoc@Open+and+Closed+Streams].
|
||||
*
|
||||
* Related: IO#close_read, IO#close_write, IO#close.
|
||||
*/
|
||||
|
||||
|
||||
|
@ -5731,17 +5755,33 @@ rb_io_closed(VALUE io)
|
|||
* call-seq:
|
||||
* close_read -> nil
|
||||
*
|
||||
* Closes the read end of a duplexed stream (i.e., one that is both readable
|
||||
* and writable, such as a pipe); does nothing if already closed:
|
||||
* Closes the stream for reading if open for reading;
|
||||
* returns +nil+.
|
||||
*
|
||||
* f = IO.popen('/bin/sh','r+')
|
||||
* f.close_read
|
||||
* f.readlines # Raises IOError
|
||||
* If the stream was opened by IO.popen and is also closed for writing,
|
||||
* sets global variable <tt>$?</tt> (child exit status).
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* IO.popen('ruby', 'r+') do |pipe|
|
||||
* puts pipe.closed?
|
||||
* pipe.close_write
|
||||
* puts pipe.closed?
|
||||
* pipe.close_read
|
||||
* puts $?
|
||||
* puts pipe.closed?
|
||||
* end
|
||||
*
|
||||
* Output:
|
||||
*
|
||||
* false
|
||||
* false
|
||||
* pid 14748 exit 0
|
||||
* true
|
||||
*
|
||||
* See also {Open and Closed Streams}[rdoc-ref:io_streams.rdoc@Open+and+Closed+Streams].
|
||||
*
|
||||
* Raises an exception if the stream is not duplexed.
|
||||
*
|
||||
* Related: IO#close, IO#close_write, IO#closed?.
|
||||
*/
|
||||
|
||||
static VALUE
|
||||
|
@ -5789,14 +5829,33 @@ rb_io_close_read(VALUE io)
|
|||
* call-seq:
|
||||
* close_write -> nil
|
||||
*
|
||||
* Closes the write end of a duplexed stream (i.e., one that is both readable
|
||||
* and writable, such as a pipe); does nothing if already closed:
|
||||
* Closes the stream for writing if open for writing;
|
||||
* returns +nil+:
|
||||
*
|
||||
* f = IO.popen('/bin/sh', 'r+')
|
||||
* f.close_write
|
||||
* f.print 'nowhere' # Raises IOError.
|
||||
* Flushes any buffered writes to the operating system before closing.
|
||||
*
|
||||
* If the stream was opened by IO.popen and is also closed for reading,
|
||||
* sets global variable <tt>$?</tt> (child exit status).
|
||||
*
|
||||
* IO.popen('ruby', 'r+') do |pipe|
|
||||
* puts pipe.closed?
|
||||
* pipe.close_read
|
||||
* puts pipe.closed?
|
||||
* pipe.close_write
|
||||
* puts $?
|
||||
* puts pipe.closed?
|
||||
* end
|
||||
*
|
||||
* Output:
|
||||
*
|
||||
* false
|
||||
* false
|
||||
* pid 15044 exit 0
|
||||
* true
|
||||
*
|
||||
* See also {Open and Closed Streams}[rdoc-ref:io_streams.rdoc@Open+and+Closed+Streams].
|
||||
*
|
||||
* Related: IO#close, IO#close_read, IO#closed?.
|
||||
*/
|
||||
|
||||
static VALUE
|
||||
|
|
Loading…
Reference in a new issue