Process Creation: exec and
exit Issues

Both the exec(2)
and exit(2) system calls work as these functions do in
single-threaded processes with the following exception. In a multithreaded
application, the functions destroy all the threads in the address space. Both
calls block until all the execution resources, and so all active threads,
are destroyed.

When exec() rebuilds the process, exec() creates
a single lightweight process (LWP). The process startup code builds the initial
thread. As usual, if the initial thread returns, the thread calls exit() and
the process is destroyed.

When all the threads in a process exit, the process exits. A call to
any exec() function from a process with more than one
thread terminates all threads, and loads and executes the new executable image.
No destructor functions are called.