runtime/io_popen.rb

tests/_examples/runtime/io_popen.rb in the metorex repository.

io = IO.popen "echo hello"
print io.read
puts io.read.empty?
puts io.pid > 0
puts io.closed?
io.close
puts io.closed?

status = Process.last_status
puts status.exited?
puts status.exitstatus
puts status.signaled?
puts status.termsig.inspect
puts status.success?
puts status.to_i

puts IO.popen("printf one") { |child| child.read }

merged = IO.popen("printf err 1>&2", err: [:child, :out]) { |child| child.read }
puts merged

IO.popen("exit 3") { |child| child.read }
puts Process.last_status.exitstatus
puts Process.last_status.success?

Output:

hello
true
true
false
true
true
0
false
nil
true
0
one
err
3
false