Middle
Чӣ кор мекунад даъвати системаи fork()?
sobes.tech AI
Ҷавоб аз AI
Unix tizimlarida fork() tizim chaqiruvi yangi jarayon yaratadi va bu jarayon chaqiruvchining (ota) nusxasi bo‘ladi. Yangi jarayon bola deb ataladi. fork() chaqirilgandan so‘ng, sizda ikkita jarayon bo‘lib, ular chaqiruv nuqtasidan davom etadi.
Xususiyatlar:
- Bola jarayoni ota jarayonining manzil bo‘shlig‘ining nusxasini oladi.
fork()-ning qaytish qiymati jarayonlarni ajratishga imkon beradi:- Ota jarayonida, bolalar jarayonining PIDsi qaytariladi.
- Bola jarayonida, 0 qaytariladi.
- Xato bo‘lsa, -1 qaytariladi.
Go tilida misol (syscall chaqiruvi orqali, chunki Go da to‘g‘ridan-to‘g‘ri forkga teng keladigan narsa yo‘q):
package main
import (
"fmt"
"syscall"
)
func main() {
pid, _, err := syscall.RawSyscall(syscall.SYS_FORK, 0, 0, 0)
if err != 0 {
fmt.Println("Fork muvaffaqiyatsiz")
return
}
if pid == 0 {
fmt.Println("Bu bola jarayoni")
} else {
fmt.Printf("Bu ota jarayoni, bola PID: %d\n", pid)
}
}
Go da odatda exec.Command va goroutine lar fork() o‘rniga ishlatiladi.