Middle
Čo robí systémový volaný fork()?
sobes.tech AI
Odpoveď od AI
Systémový volanie fork() v Unixových operačných systémoch vytvára nový proces, ktorý je kópiou volajúceho procesu (rodiča). Nový proces sa nazýva dieťa. Po volaní fork() máte dva procesy, ktoré pokračujú vo vykonávaní od miesta volania.
Vlastnosti:
- Proces dieťaťa dostáva kópiu adresného priestoru rodiča.
- Hodnota návratu
fork()umožňuje rozlíšiť procesy:- V rodičovskom procese sa vracia PID dieťaťa.
- V dieťatom procese sa vracia 0.
- Pri chybe sa vracia -1.
Príklad v Go (cez syscall volanie, pretože v Go nie je priame ekvivalent fork):
package main
import (
"fmt"
"syscall"
)
func main() {
pid, _, err := syscall.RawSyscall(syscall.SYS_FORK, 0, 0, 0)
if err != 0 {
fmt.Println("Nepodarilo sa fork")
return
}
if pid == 0 {
fmt.Println("Toto je dieťa")
} else {
fmt.Printf("Toto je rodičovský proces, PID dieťaťa: %d\n", pid)
}
}
V Go sa zvyčajne namiesto fork() používajú exec.Command a gorutiny.