stdlib/io/io_clone_descriptor.rb

tests/_examples/stdlib/io/io_clone_descriptor.rb in the metorex repository.

copy = $stdout.clone
puts copy.fileno == $stdout.fileno
copy.close
puts "stdout still open"

require "tempfile"
captured = Tempfile.new("capture")
saved = $stdout.clone
$stdout.reopen(captured)
system("echo from a child")
$stdout.flush
$stdout.reopen(saved)
saved.close
captured.rewind
puts "captured #{captured.read.inspect}"
captured.close
captured.unlink

Output:

false
stdout still open
captured "from a child\n"