Middle
fork() sistem çağrısı ne yapar?
sobes.tech yapay zeka
AI'dan gelen yanıt
Unix tabanlı işletim sistemlerinde fork() sistem çağrısı, çağıran süreçle (ebeveyn) aynı olan yeni bir süreç oluşturur. Yeni süreç çocuk olarak adlandırılır. fork() çağrısından sonra, iki süreç, çağrı noktasından devam eder.
Özellikler:
- Çocuk süreç, ebeveynin adres alanının bir kopyasını alır.
fork()'un dönüş değeri, süreçleri ayırt etmeyi sağlar:- Ebeveyn süreçte, çocuk sürecin PID'si döndürülür.
- Çocuk süreçte, 0 döndürülür.
- Hata durumunda, -1 döndürülür.
Go'da örnek (doğrudan fork'a karşılık gelen bir fonksiyon olmadığı için syscall çağrısı kullanılır):
package main
import (
"fmt"
"syscall"
)
func main() {
pid, _, err := syscall.RawSyscall(syscall.SYS_FORK, 0, 0, 0)
if err != 0 {
fmt.Println("Fork başarısız")
return
}
if pid == 0 {
fmt.Println("Bu çocuk sürecidir")
} else {
fmt.Printf("Bu ebeveyn süreç, çocuk PID: %d\n", pid)
}
}
Go'da genellikle exec.Command ve goroutines, fork() yerine kullanılır.