Sobes.tech
Назад к вопросам
Middle
4

Что делает системный вызов fork()?

Компании, где спрашивали
VKVK

Ответ от нейросети

sobes.tech AI

Системный вызов fork() в операционных системах на базе Unix создает новый процесс, который является копией вызывающего процесса (родителя). Новый процесс называется дочерним. После вызова fork() у вас есть два процесса, которые продолжают выполнение с точки вызова.

Особенности:

  • Дочерний процесс получает копию адресного пространства родителя.
  • Возвращаемое значение fork() позволяет отличить процессы:
    • В родительском процессе возвращается PID дочернего процесса.
    • В дочернем процессе возвращается 0.
    • При ошибке возвращается -1.

Пример на Go (через вызов syscall, так как в Go нет прямого аналога fork):

package main

import (
	"fmt"
	"syscall"
)

func main() {
	pid, _, err := syscall.RawSyscall(syscall.SYS_FORK, 0, 0, 0)
	if err != 0 {
		fmt.Println("Fork failed")
		return
	}
	if pid == 0 {
		fmt.Println("Это дочерний процесс")
	} else {
		fmt.Printf("Это родительский процесс, дочерний PID: %d\n", pid)
	}
}

В Go чаще используют exec.Command и goroutines вместо fork().