Re: [Haskell] Re: state of HaXml?

On 1/10/07, Malcolm Wallace
Actually, I'm pretty sure that most Haskell RTS implementations have a finalizer attached to all file handles. Once the file handle is no longer reachable from the program graph (even if its data has not been fully consumed), the GC will close the file (via the finalizer) before reaping the memory associated with the handle.
That's not the point. The GC will only close the file when the heap is
under pressure. It does not aggressively close the file, so the file
may stay open for longer than the user likes. For a read-only
operation, this shouldn't matter, however on some platforms an open
file handle can prevent deletion of the file.
--
Taral

Taral wrote:
For a read-only operation, this shouldn't matter, however on some platforms an open file handle can prevent deletion of the file.
You'd be referring to Windows, then, where you can't rename or remove a file if someone has opened it. A partial defence against this is to pass FILE_SHARE_DELETE to CreateFile, if your Haskell runtime is using the win32 file API. The semantics are a bit strange, but it's less hostile than the default behaviour. If your favourite runtime is going through stdio, you're stuck (the strong-stomached can use CreateFile, then turn the handle into a FILE*, but this behaves peculiarly).
participants (2)
-
Bryan O'Sullivan
-
Taral