Фактическое fork forking происходит внутри примитива fork().
Вы можете просто представить, что внутри кода fork системный вызов фактически дублирует процесс и запускает его выполнение на с той же точкой с небольшой разницей:
функция родительского процесса fork вернет идентификатор процесса дочернего процесса, функция дочернего процесса fork вернет 0.Таким образом, вы знать, где вы находитесь во время программирования, например
if (fork())
{
printf("Parent speaking\n");
// parent's tasks
}
else
{
printf("Child here\n");
// child's tasks
}