CodeBlanks Logo Icon CodeBlanks

fork

  • C kursu
  • İleri seviye
  • Ders 7/83
  • 5 dk

fork ile süreç oluşturmayı öğrenirsin.

fork nedir?

fork, çalışan sürecin tam bir kopyasını oluşturur. Özgün sürece ebeveyn, yeni kopyaya çocuk denir. İkisi de aynı kodu çalıştırır ama farklı süreçlerdir.

fork bir pid_t değeri döndürür: çocuğa 0, ebeveyne çocuğun numarası (pozitif), hatada -1. Dönüş değerini denetleyerek hangi sürece olduğunu anlarsın. Bu, eşzamanlı programlamanın temelidir.

Ebeveyn ve çocuk

fork'tan sonra ebeveyn ve çocuk aynı noktadan devam eder. if (pid == 0) ile çocuk dalını, else ile ebeveyn dalını yazarsın.

Çocuk, ebeveynin dosya tanıtıcılarını ve belleğini kopyalar ama aynı bellek paylaşmazlar. Tanıtıcılar aynı tabloya işaret eder; ikisi de aynı dosyayı görür. Çocuk bittiğinde ebeveyn wait ile onu beklemelidir; değilse çocuk zombi olur. wait'i bir sonraki derste göreceksin.

Uygulama fork ile süreç oluştur

pid_t pid = fork(); ile süreç oluştur. if (pid == 0) dalında çocuk _exit(0) ile çıksın. Ebeveyn dalında printf("fork yapıldı\n"); ile yazdır.

Başlangıç kodu

main.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

// fork çağır
// çocukta çıkış yap
// ebeveynde yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main(void) {
    pid_t pid = fork();
    if (pid == 0) {
        _exit(0);
    }
    printf("fork yapıldı\n");
    return 0;
}

Beklenen çıktı

fork yapıldı

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 fork çağrısından sonra çocuk sürece ne döner?

  • -1
  • Ebeveynin PID'si
  • 0 Doğru cevap
  • 1

Açıklama: Çocuğa 0 döner; ebeveyne çocuğun PID'si.

2 fork çağrısı

Soru
pid_t pid = ____();
Cevap
pid_t pid = fork();

Açıklama: fork ebeveyn ve çocuk süreç oluşturur.

3 Süreç fonksiyonlarını eşle

Kavram Anlamı
fork Süreç oluşturur
exec Program değiştirir
wait Çocuğu bekler
getpid PID döndürür

İleri seviye bölümündeki tüm dersler