This glibc wrapper is used to create a child process. Modern fork () is implemented using copy-on-write pages. The child only receives a new copy of a memory page when it tries to make a change to something in that page. Until then, it simply uses the parent's copy. This is called copy-on-write.
This system call, along with the class of exec system calls (ie. execl(), execlp(), execv(), execvp()) is actually the way for shell to executes programs given on the command line.
In case of failure: It returns negative error number for ENOMEM, EAGAIN etc
In case of success: It returns 0 to new child process and PID of child process to parent process.