open5
gem install open5
and
require 'open5'
open5('command', 'opt') {|i, o, e, t|
i.puts 'input!'
p o.gets
Process.kill 'KILL', t.pid
}
or
require 'open5'
i, o, e, t = open5('command', 'opt')
Why open5?
open3doesn't give the pid on ruby 1.8.open4has different interface toopen3on ruby 1.9.tasksdoesn't work on Windows because it usesfork.
open5 works both on ruby 1.8 and 1.9, and supports Windows! (Though I've never tested it on Windows yet.)
Dependency
open4
Author
Tatsuhiro Ujihisa