Ö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
#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
#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 |