Middle
Was macht der Systemaufruf fork()?
sobes.tech KI
Antwort von AI
Der Systemaufruf fork() in Unix-basierten Betriebssystemen erstellt einen neuen Prozess, der eine Kopie des aufrufenden Prozesses ist (Elternprozess). Der neue Prozess wird als Kind bezeichnet. Nach dem Aufruf von fork() haben Sie zwei Prozesse, die die Ausführung ab dem Aufrufpunkt fortsetzen.
Eigenschaften:
- Der Kindprozess erhält eine Kopie des Adressraums des Elternprozesses.
- Der Rückgabewert von
fork()ermöglicht die Unterscheidung der Prozesse:- Im Elternprozess wird die PID des Kindprozesses zurückgegeben.
- Im Kindprozess wird 0 zurückgegeben.
- Bei Fehlern wird -1 zurückgegeben.
Beispiel in Go (über den syscall-Aufruf, da es in Go kein direktes Äquivalent zu fork gibt):
package main
import (
"fmt"
"syscall"
)
func main() {
pid, _, err := syscall.RawSyscall(syscall.SYS_FORK, 0, 0, 0)
if err != 0 {
fmt.Println("Fork fehlgeschlagen")
return
}
if pid == 0 {
fmt.Println("Dies ist der Kindprozess")
} else {
fmt.Printf("Dies ist der Elternprozess, Kind-PID: %d\n", pid)
}
}
In Go werden exec.Command und Goroutines häufiger verwendet als fork().