Fork creates a new process (child process) that is identical to the calling process (parent process). Fork returns 0 to the child process and returns the child's process ID to the parent. Both the parent and child continue execution from the point of the fork, so the same code is run but in two separate processes. The parent and child can be distinguished by the return value of the fork call. Fork is useful for creating new processes but can lead to confusing behavior if not used carefully.