fork してパイプで云々というのをやっているとよくあるシチュエーションなのですが、いまだに一瞬ひっかかりそうになります。
1 pin, pout = IO.pipe 2 thr = Thread.start do pin.read end 3 pin.close 4 thr.value
実行結果
test.rb:3: stream closed (IOError) from test.rb:4:in `value' from test.rb:4
バックトレースのトップは3行目のcloseで発生しているかのようになるんですよね。
なんとなく理由は判るような気もするのでこういうものと思って気をつけるようにしています。