7

Suppose we have a parent process and if it calls an exec function, after calling a fork to create child process.

Now what happens to the child process: will it act like the original parent process, such that the user won't spot the difference that the parent process got replaced with some other binary ?

I think this question differs from the following question what happens to child process?.

if ( (pid == fork ()) != 0 )
{
    if (strcmp(cmd,"mypwd")==0)
    {
        execlp (“mypwd”,0);
    }

    ...
    ...

    else if (strcmp(cmd,"myexit")==0)
        exit(1);
}
Community
  • 1
  • 1
Amrith Krishna
  • 2,768
  • 3
  • 31
  • 65

1 Answers1

7

The pid of the parent process will remain the same after the exec, so the process hierarchy won't be affected.

The problem with this approach is that the newly replaced parent process generally won't be aware that it has previously spawned a child and will not call wait or waitpid on it. This will cause the child process to become a zombie when it exits.

Blagovest Buyukliev
  • 42,498
  • 14
  • 94
  • 130