From: "felipec (Felipe Contreras)" Date: 2013-09-04T10:35:20+09:00 Subject: [ruby-core:57001] [ruby-trunk - Bug #7358] Wrong fd redirection on fork Issue #7358 has been updated by felipec (Felipe Contreras). drbrain (Eric Hodel) wrote: > =begin > If you want data to show up in ((%/tmp/foo%)), redirect stdout in the child process. Setting file descriptor 3 does nothing since ((%echo%)) makes no use of it. That's not what I want, and yes, setting that does nothing, or *should* do nothing, but that's now what the command above did, it failed. Fortunately it seems to be fixed now. ---------------------------------------- Bug #7358: Wrong fd redirection on fork https://bugs.ruby-lang.org/issues/7358#change-41593 Author: felipec (Felipe Contreras) Status: Rejected Priority: Normal Assignee: Category: Target version: ruby -v: 1.9.3p327 Backport: It seems fd redirecton only works with spawn, not with fork+exec (at least for fd 3). % ruby -v ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux] #!/usr/bin/env ruby tmp = File.new('/tmp/foo', File::CREAT | File::WRONLY) cmd = ['echo', 'yes'] pid = Process.spawn(*cmd, 3 => tmp) Process.wait(pid) pid = fork do Process.exec(*cmd, :close_others => true, 3 => tmp) end Process.wait(pid) -- http://bugs.ruby-lang.org/