Question about atexit()
Dave Decot
decot at hpisod2.cup.hp.com
Tue Aug 21 14:04:16 AEST 1990
From: decot at hpisod2.cup.hp.com (Dave Decot)
> Recently, while discussing pthreads, I mentioned the use of atexit()
> as a way of helping thread cleanup if another thread calls exit().
> It was pointed out to me that atexit() is not defined in 1003.1
> 1988.
> I originally assumed that as .1 #includes all of ANSI C then atexit()
> would be able to be used in a conforming application but the book
> appears to indicate otherwise.
That assumption is false: only for one type of conformance is
all of ANSI C required. For other types, only interfaces reflecting
"common usage in C" are required (a mostly undefined concept, unfortunately).
> So, can anyone in .1 explain whether atexit() really is required
> by .1 or not and if not, what the rationale is because I don't
> understand what the book is getting at.
> ...
> Simon Patience
atexit() is required when the implementation claims Standard C Language
support, since it is required by the C Standard.
atexit() is not required for implementations that claim Common Usage C
Language Support, although the fact must be documented that exit() does not
work as defined by the C standard.
For the reasons stated by Simon above, I personally think it should have
been included in the list of functions at the beginning of Chapter 8 of
POSIX.1-1988, but wasn't.
I would like to see it (or some kind of language independent version, at least,
with it required in the C binding) required by a future version of POSIX.1 .
In the mean time, I think it would be prudent for POSIX.4 and POSIX.4a to
require a C Standard conforming atexit() function.
Dave Decot
Volume-Number: Volume 21, Number 46
More information about the Comp.std.unix
mailing list