#!/usr/bin/env ruby # coding: euc-jp prog = "./ioe.sh" STDERR.print "指定した月数分だけカレンダーを出力します。 何ヶ月分出しますか: " n = gets.to_i # 英字だけなどは0になる。 STDOUT.flush i = IO.pipe # 子プロセスの標準入力とのパイプ o = IO.pipe # 子プロセスの標準出力とのパイプ e = IO.pipe # 子プロセスの標準エラー出力とのパイプ STDOUT.flush if pid=fork i[1].puts n.to_s i[1].close # 書き出しが終了したのでクローズ i[0].close # 以下,使わないのでクローズ o[1].close; e[1].close while line=o[0].gets print ":"+line # コロンを付けて出力 end else i[1].close; o[0].close; e[0].close # 使わないのでクローズ STDIN.reopen(i[0]) # STDINの置き換え STDOUT.reopen(o[1]) # STDOUTの置き換え STDERR.reopen(e[1]) # STDERRの置き換え exec(prog) end