Actions
Bug #11009
closedclosed STDOUT status does not get inherited to children processes created with exec
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux]
Description
When closing STDOUT
, then STDOUT.closed?
returns true
. In a child process started with exec, STDOUT
is closed but it does closed?
returns false
.
Also, in the child process, writing to STDOUT
fails silently, so the user has no idea that his stdout
is closed.
Ruby should return the proper response to closed?
and not fail silently when writing to the closed STDOUT
stream.
#!/usr/bin/ruby
child_mode = true if ARGV[0] == 'child_mode'
process_name = child_mode ? "CHILD" : "PARENT"
if !child_mode
STDERR.puts "Closing stdout and forking"
STDOUT.close
STDERR.puts "#{process_name} STDOUT closed? #{STDOUT.closed?}"
exec 'ruby', $0, "child_mode"
else
STDERR.puts "#{process_name} STDOUT closed? #{STDOUT.closed?}"
end
STDERR.puts "Trying to write to STDOUT a test line"
STDOUT.puts "#{process_name} test puts to STDOUT"
STDERR.puts "Done writing STDOUT. Did you see anything?"
Actions
Like0
Like0Like0Like0