When a user forks, initially both the processes are using the same address space, whereas when we use exec, it makes the child process switch to a completely new address space i.e. the address space is same but everything is newly allocated for it.
Few reasons why we use exec funcions *To replace the current process * To reuse the current process' resources and PID *In Linux every functions calls the execve(which is a exec family) function which is actually understood by the kernel, this is because to reuse the current process context(which is the bash shell) for the further processes.