子プロセス間でパイプをつなぐ

親プロセスで作成したパイプを子プロセス間でつなぐ方法

以下のスクリプトは、標準入力で 何か文字を入力すると、それが出力されるサンプル。

out_r, out_w = IO.pipe

script1 = <<~SCRIPT1
$stdout.sync = true
loop do
  v = gets
  puts '1:' + v
  sleep 1
end
SCRIPT1
spawn("ruby", "-e", script1, { :out => out_w })

script2 = <<~SCRIPT2
loop do
  puts '2:' + gets
  sleep 1
end
SCRIPT2
spawn("ruby", "-e", script2, { :in => out_r })

loop do
  sleep(1)
end