Вот как использовать open3 Ruby:
require 'open3'
include Open3
stdin, stdout, stderr = popen3('date')
stdin.close
puts
puts "Reading STDOUT"
print stdout.read
stdout.close
puts
puts "Reading STDERR"
print stderr.read
stderr.close
# >>
# >> Reading STDOUT
# >> Sat Jan 22 20:03:13 MST 2011
# >>
# >> Reading STDERR
popen3
возвращает потоки ввода-вывода для STDIN, STDOUT и STDERR, что позволяет вам выполнять ввод-вывод в открытое приложение.
Многие приложения командной строки требуют, чтобы их STDIN были закрыты до того, как они обработают свой ввод.
Вы должны прочитать из возвращенных каналов STDOUT и STDERR.Они автоматически не помещают содержимое в мистическую переменную.
В общем, мне нравится использовать блок с popen3
, потому что он выполняет очистку за собой.
Просмотрите примеры в Open3 док.Там много приятного функционала.