From: "nobu (Nobuyoshi Nakada)" Date: 2013-06-19T11:41:30+09:00 Subject: [ruby-core:55552] [ruby-trunk - Bug #8541][Rejected] Open3.popen3 creates a broken stdout pipe 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/