Назад к вопросам
VK
Middle
4
Что делает системный вызов fork()?
Компании, где спрашивали
Ответ от нейросети
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().