This function creates a child process and block parent (calling process).
It is used to create new processes without copying the page tables of the parent process. This system call avoids the address space and page table copying by suspending the parent process until the child terminates or executes a new binary image.
It may be useful in performance-sensitive applications where a child is created which then immediately issues an execve().
return type is similar to fork