EMZETT.
Giriş yap

fork ve exec: Unix programları nasıl başlatır

Kısaca: Unix yeni programları iki adımda başlatır: fork çalışan süreci kopyalar, exec kopyadaki programı başka bir programla değiştirir.

Biraz daha ayrıntılı: Kabuktaki her komut da böyle başlar. Bu bölünme, iki adım arasında yönlendirmeler veya yetkiler gibi ayarların yapılmasına izin verir.

Ayrıntılı

  • fork: Neredeyse özdeş durumda bir alt süreç oluşturur. Dönüş değeri ayırt eder: ebeveyn süreçte alt sürecin PID’i, alt süreçte 0. Copy-on-write sayesinde ucuzdur.
  • exec: Sürece yeni bir program yükler. PID kalır, bellek ve kod değiştirilir.
  • wait: Ebeveyn, alt sürecin bitmesini wait/waitpid ile bekler. Unutursa bir zombi süreç kalır.
  • Yönlendirme: Kabuk, fork’tan sonra ve exec’ten önce dosyaları (>) veya boruları açar ve bunları girdi ve çıktı olarak ayarlar.
  • Windows: fork bilmez; ikisini birleştiren CreateProcess vardır.
  • Modern alternatifler: posix_spawn ve vfork, büyük süreçlerde maliyeti azaltır.
  • Konteynerler: Konteynerdeki ilk süreç PID 1’dir ve öksüz alt süreçleri toplamalıdır.

Ayrıca bak: Süreçler ve sinyaller