Sobes.tech
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.