This is the mail archive of the
mailing list for the GCC project.
Re: stderr vs. STDERR_FILENO
Jonathan Lennox <firstname.lastname@example.org> writes:
> Zack Weinberg <zack at codesourcery dot com> writes:
>> For what it's worth I think this is primarily a documentation issue -
> It just occured to me -- no, unfortunately, this is a correctness issue.
> This C++ program is well-defined by the standard -- it invokes
> std::terminate, which invokes abort().
> Now, as a matter of QoI, I suspect that in almost every actual C library a
> write to a closed stderr will always fail with EOF, which means that my
> little program still has the behavior mandated by the standard.
I was suspicious that glibc might crash on a write to a closed stderr,
but experimentally it does not - returns EOF, as desired.
A middle road: By default, std::terminate just calls abort(), but
provide an environment variable which enables verbose mode. The
programmer can use it only when appropriate. (Should probably be
ignored in privileged programs.)