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.