Actions
Bug #9617
closedWindows7 issue with Kernel.spawn close_others => false
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.0.0p451 (2014-02-24) [i386-mingw32]
Description
I faced an issue while trying to inherit a file or pipe handle from a master process to its child on windows 7.
I tried this implementation:
- master.rb:
rd, wr = IO.pipe
puts "Pipe opened: #{rd.fileno} <= #{wr.fileno}"
cmd = "ruby child.rb #{rd.fileno}"
pid = Kernel.spawn cmd, :close_others => false
wr.write "Hello World\n"
Process.wait pid
- child.rb:
puts "Child:Start #{ARGV}"
rd = IO.new(ARGV[0].to_i, mode: "r")
puts rd.read
On windows I get the following output while it works fine on linux.
Pipe opened: 3 <= 4
Child:Start ["3"]
child.rb:2:in `initialize': Bad file descriptor (Errno::EBADF)
from child.rb:2:in `new'
from child.rb:2:in `<main>'
Note: the same test with the fileno of a file opened from master.rb lead to the same exception in child.rb
Actions
Like0
Like0Like0Like0Like0