> On Jun 29, 2020, at 9:09 AM, Rhialto <rhia...@falu.nl> wrote:
> 
> But I wonder if there is any standards text that
> describes whether this particular scenario is supposed to work.

Quoting from "The Open Group Base Specifications Issue 7, 2018 edition"

<quote>
The atexit() function shall register the function pointed to by func, to be 
called without arguments at normal program termination. At normal program 
termination, all functions registered by the atexit() function shall be called, 
in the reverse order of their registration, except that a function is called 
after any previously registered functions that had already been called at the 
time it was registered. Normal termination occurs either by a call to exit() or 
a return from main().
</quote>

My reading of the standard here is that atexit() handlers are called at "normal 
program termination", and that "normal program termination" is explicitly 
defined as either a call to exit() or returning from main(), and thus any other 
call to atexit() handlers is expressly forbidden by the standard.

-- thorpej

Reply via email to