/proc
- C kursu
- Uzman
- Ders 4/47
- 5 dk
/proc dosya sistemini öğrenirsin.
/proc sanal dosya sistemi
/proc, çekirdeğin ve süreçlerin durumu hakkında bilgi veren sanal dosya sistemidir. Diskte yer kaplamaz; okunduğunda dinamik üretilir.
Her süreç için /proc/<pid>/ dizini vardır: status, maps, cmdline gibi dosyalar içerir. Sistem geneli bilgiler /proc/cpuinfo, /proc/meminfo, /proc/uptime dosyalarındadır. C programları bunları sıradan dosya gibi fopen ile açıp okur. Çekirdek bu verileri anlık üretir; bu yüzden her okuma güncel değer verir.
/proc/self ve dinamik okuma
/proc/self, her sürecin kendisini gösteren özel bir bağlantıdır; getpid() ile uğraşmadan kendi bilgini okursun.
read veya fgets ile dosyayı satır satır okur, sonra ayrıştırırsın. Çekirdek metni biçimlendirilmiş üretir; sscanf ile alan çıkarılır. Örneğin /proc/loadavg beş sayı verir. Çok sık okuma performansı etkileyebilir; bu yüzden önbelleklemek iyi bir alışkanlıktır. /proc yalnızca okunabilir değildir; bazı dosyalara yazarak çekirdek ayarı değiştirilebilir.
Uygulama /proc bilgisi yazdır
void print_proc(const char *path, const char *value) fonksiyonunu tanımla; gövdesi printf("%s: %s\n", path, value); olsun. main içinde bunu ("/proc/self/status", "running") ve ("/proc/cpuinfo", "x86_64") ile çağır.
Başlangıç kodu
#include <stdio.h>
// print_proc fonksiyonunu tanımla
// /proc/self/status ve /proc/cpuinfo için çağır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
void print_proc(const char *path, const char *value) {
printf("%s: %s\n", path, value);
}
int main(void) {
print_proc("/proc/self/status", "running");
print_proc("/proc/cpuinfo", "x86_64");
return 0;
}Beklenen çıktı
/proc/self/status: running /proc/cpuinfo: x86_64
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hangisi süreç özgü bir /proc yoludur?
- /proc/cpuinfo
- /proc/meminfo
- /proc/uptime
- /proc/1234/status Doğru cevap
Açıklama: Süreç özgü yollar /proc/<pid>/ biçimindedir.
2 /proc dosyalarını içeriğine eşle
| Kavram | Anlamı |
|---|---|
/proc/cpuinfo |
İşlemci bilgisi |
/proc/meminfo |
Bellek durumu |
/proc/uptime |
Çalışma süresi |
/proc/self/status |
Kendi sürecim |
3 /proc/self/status aç
FILE *f = fopen("/proc/____", "r");
FILE *f = fopen("/proc/self/status", "r");
Açıklama: /proc/self/status kendi sürecinin durumunu verir.