From: Matt Bleh Date: 2009-09-21T10:14:31+09:00 Subject: Writing to STDOUT after closing controlling terminal Hi, I don't know if this is a dumb question or not (I hope it isn't), but it seems to me there's something wrong here. I've been using Ruby for a long time now, and I never noticed this (maybe it wasn't working like this in the past), and it just seems odd. If I write the following code: sleep(5) begin puts 'hi!' rescue File.open('output', 'w') {|io| io.puts $!.message } end And execute it in Ruby 1.9.1p243 in a graphical terminal (e.g.: konsole) as a foreground process I obviously get this: $ ./test.rb hi! And there's no "output" file created sine no exception was raised. Now, If I do: $ ./test.rb & [1] 28137 and immediately close konsole, 5 seconds later I get: $ cat output Input/output error - Is this ok? I seems to me that one shouldn't have to care if the controlling terminal is closed when doing "puts" to avoid this exception from ending my ruby process. As a sidenote, with Ruby 1.8.7p174 the process doesn't get any exception. If now I write (to check for normal process completion): sleep(5) begin puts 'hi!' File.open('output2', 'w') {|io| io.puts 'ok' } rescue File.open('output', 'w') {|io| io.puts $!.message } end with and execute it as before, I get the "output2" file with the "ok" string in it. Is this a bug? a feature? Thank you, Matt -- Posted via http://www.ruby-forum.com/.