Forum: Ruby Re: IO not closed by GC

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Gennady B. (Guest)
on 2006-04-17 22:35
(Received via mailing list)
Even GC.start does not guarantee that the garbage collection will be
actually started, it is just a hint after all. And I am not sure that
even when an IO object is being garbage collected, there will be an
implicit call to close(). I personally would not expect it as no
finalizers are installed by default.

So the programmer must take care to write the correct code, short or
long ;-).

Even if GC.start helped in your case, the overall code would be longer
(because of calls to GC.start) and work much worse (as GC does a lot
that you may not need for the moment) than what I have suggested. And
using blocks with popen is GUARANTEED to close descriptors properly. See
my point?

By the way, you are welcome.

Gennady.
Giles B. (Guest)
on 2006-04-17 23:25
(Received via mailing list)
I have a question abt this GC stuff, tangential to the challenge
itself, so million pardons, but I see this in many languages -- it's
always a suggestion rather than a requirement. Is this just to trip up
incautious programmers with shallow understanding? Or is it a hook for
special cases when you want to override that stuff w/custom memory
mgmt? What's the benefit? I've seen so much use of this type of
command in bad Java and virtually never seen ppl using it anywhere
else. I guess I sound kind of aggressive or critical but it's a common
decision among language designers so there must be some reason for it.
(Also apologies for the brevity, I'm on my mobile.)


Giles
This topic is locked and can not be replied to.