$:.unshift '.' $:.unshift './lib' $:.unshift '../lib' require 'open4' # # using block form process is automatically waited using waitpid2 # out, err = nil status = Open4::popen4('sh') do |cid, i, o, e| i.puts 'echo 42' i.close out = o.read err = e.read end puts "out <#{ out.strip }>" puts "err <#{ err.strip }>" puts "status <#{ status.inspect }>" puts "pid <#{ status.pid }>" puts "exitstatus <#{ status.exitstatus }>"