Sobes.tech
Middle

Mit csinál a fork() rendszerhívás?

sobes.tech MI

Válasz az MI-től

A fork() rendszerhívás Unix-alapú operációs rendszerekben új folyamatot hoz létre, amely a hívó folyamat (szülő) másolata. Az új folyamatot gyermeknek nevezik. A fork() hívás után két folyamat folytatja a végrehajtást a hívás pontjától.

Jellemzők:

  • A gyermek folyamat másolatot kap a szülő címtéréről.
  • A fork() visszatérési értéke lehetővé teszi a folyamatok megkülönböztetését:
    • A szülő folyamatban a gyermek PID-je kerül visszaadásra.
    • A gyermek folyamatban 0 kerül visszaadásra.
    • Hibás esetben -1 kerül visszaadásra.

Példa Go nyelven (syscall hívással, mivel Go-ban nincs közvetlen fork):

package main

import (
	"fmt"
	"syscall"
)

func main() {
	pid, _, err := syscall.RawSyscall(syscall.SYS_FORK, 0, 0, 0)
	if err != 0 {
		fmt.Println("Fork sikertelen")
		return
	}
	if pid == 0 {
		fmt.Println("Ez a gyermek folyamat")
	} else {
		fmt.Printf("Ez a szülő folyamat, gyermek PID: %d\n", pid)
	}
}

A Go-ban általában az exec.Command és goroutine-ok használatosak a fork() helyett.