pthread+exec question

Damien Elmes resolve at
Mon Feb 11 10:02:29 EST 2002

Eyal Lebedinsky <eyal at> writes:

> >   ``The call exec() does exactly what it did before -- it deletes the
> >     entire memory mapping for the calling process and replaces it with
> >     the one appropriate for the new program.  A program with multiple
> >     threads that calls exec() will have all of those threads (and any
> >     LWPs) terminated, and the only thing left will be the new
> >     program.''
> Sure, this is the general way exec() should go, but the question is:
> 	What pid will the new program have (we may have had many pids
> before)? Will the program that launched us (e.g. our terminal shell)
> drop from their wait() at this point?

[disclaimer.. i've done very little with threading]

if you want to ensure that you keep the main pid of the process (and thus avoid
falling through), the simplest way i can see of doing this is to refactor your
program to check for a flag that's set when the child thread ends, and roll the
exec behavior into the main one. this may not be a very elegant way to go about
it, but threads and process control (such as signals) have never been
particularly elegant.

Damien Elmes
resolve at

More information about the linux mailing list