CodeBlanks Logo Icon CodeBlanks

Özet - Süreç yönetimi

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

fork, exec ve wait'i birleştirerek bir kabuk yazarsın.

Kabuk deseni

Bu grupta süreç yönetiminin üç temel aracını öğrendin: fork ile süreç oluştur, exec ile program değiştir, wait ile bekle. Üçü birlikte UNIX kabuklarının temelini oluşturur.

Şimdi bunları birleştirerek basit bir kabuk yazacaksın: fork ile çocuk oluştur, çocukta execvp ile komutu çalıştır, ebeveynde wait ile bekle. Bu desen, her komut satırı kabuğunun arka planında çalışır.

Uygulama Mini kabuk

pid_t pid = fork(); ile çocuk oluştur. Çocukta char *args[] = {"echo", "merhaba", NULL}; ve execvp("echo", args);. Ebeveynde int status; wait(&status); ve printf("bitti\n");.

Başlangıç kodu

main.c
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>

// fork yap
// çocukta execvp ile echo çalıştır
// ebeveynde wait ve yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>

int main(void) {
    pid_t pid = fork();
    if (pid == 0) {
        char *args[] = {"echo", "merhaba", NULL};
        execvp("echo", args);
        _exit(1);
    }
    int status;
    wait(&status);
    printf("bitti\n");
    return 0;
}

Beklenen çıktı

merhaba
bitti

Sonraki adımlar

Süreç yönetimini öğrendin. Sonraki gruplarda sinyallerle süreçler arası iletişimi, iş parçacıklarıyla eşzamanlı çalışmayı ve soketlerle ağ iletişimini göreceksin.

Tüm bu konular fork, exec ve wait'in üzerine inşa edilir. Örneğin bir sunucu fork ile her istemci için çocuk oluşturur. getpid ve exit ise hata ayıklama ve temiz çıkış için her yerde karşına çıkacak.

Soru ve cevaplar

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

1 Bir kabuk komut çalıştırırken hangi sırayı izler?

  • exec, fork, wait
  • wait, fork, exec
  • fork, wait, exec
  • fork, exec, wait Doğru cevap

Açıklama: Önce fork, çocukta exec, ebeveynde wait.

2 Kabuk adımlarını eşle

Kavram Anlamı
fork Süreç oluştur
execvp Program çalıştır
wait Çocuğu bekler
exit Süreci bitir

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