Issue #8541 has been updated by nobu (Nobuyoshi Nakada).

Status changed from Open to Rejected

Use `$stdout.flush` after `puts`, or `$stdout.sync = true` before `puts`.
----------------------------------------
Bug #8541: Open3.popen3 creates a broken stdout pipe
https://bugs.ruby-lang.org/issues/8541#change-40050

Author: ferrous26 (Mark Rada)
Status: Rejected
Priority: Normal
Assignee: 
Category: lib
Target version: 
ruby -v: ruby 2.0.0p195 (2013-05-14 revision 40734) [universal.x86_64-darwin13]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


When I create a subprocess using Open3, the stdout pipe that is returned does allow reading.

Using the sample code provided, Ruby will block indefinitely waiting to read from the subprocess, though the subprocess has printed out to standard output.

If you change the test script to print/read from standard error instead, then everything works.


-- 
http://bugs.ruby-lang.org/