While execve() does not run the functions registered with atexit() and they
must therefore be called explicitly prior to the call to execve(), the Windows
replacement function will end up running the atexit() hooks twice, and
clearing the pointer prevents the functions from actually running twice.