./T and ./T >& log
marlowsd at gmail.com
Tue Feb 24 08:36:25 EST 2009
Malcolm Wallace wrote:
> Simon Marlow <marlowsd at gmail.com> wrote:
>> stdout should be flushed when the program exits, regardless of whether
>> it exits as a result of a clean exit or an exception. I've just
>> checked the code, and that's certainly what is supposed to happen.
>> If anyone has evidence to the contrary, please submit a bug report!
> I believe flushing of file handles on program exit is handled by
> finalizers attached to the handle. Until recently, ghc did not
> guarantee that any finalizer would ever run.
There's a top-level exception handler that flushes stdout and stderr, so
they always get flushed on exit (or at least, they are supposed to). Look
in base:GHC.TopHandler for the code.
Other handlers will only get flushed if their finalizers run, and nothing
has changed here: we now guarantee execution of C finalizers, but that
doesn't apply to the finalizers for Handles, which are Haskell code.
More information about the Glasgow-haskell-users