File descriptors
- C kursu
- İleri seviye
- Ders 3/83
- 5 dk
File descriptor kavramını ve yönetimini öğrenirsin.
Dosya tanıtıcısı
Dosya tanıtıcısı (file descriptor, fd), açık bir dosyayı temsil eden küçük negatif olmayan tamsayıdır. İşletim sistemi her süreç için bir tanıtıcı tablosu tutar.
Her süreç başladığında üç standart tanıtıcı açıktır: 0 stdin, 1 stdout ve 2 stderr. Yeni açılan ilk dosya 3 alır. open yeni bir tanıtıcı döndürür; close onu serbest bırakır.
STDIN_FILENO ve arkadaşları
unistd.h, standart tanıtıcılar için sembolik sabitler tanımlar: STDIN_FILENO (0), STDOUT_FILENO (1) ve STDERR_FILENO (2).
Bu sabitler sihirli sayılar yerine kullanılır; kodu daha okunaklı yapar. Örneğin write(STDOUT_FILENO, msg, n) ile write(1, msg, n) aynı şeydir ama ilki daha anlamlıdır. Yeni dosyalar open ile açıldığında 3 ve üzeri tanıtıcı alır.
Uygulama Standart tanıtıcıları yazdır
STDIN_FILENO, STDOUT_FILENO ve STDERR_FILENO değerlerini printf("%d %d %d\n", ...) ile aralarında boşluk olacak şekilde yazdır. Çıktı 0 1 2 olmalıdır.
Başlangıç kodu
#include <stdio.h>
#include <unistd.h>
// Üç standart tanıtıcıyı yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
#include <unistd.h>
int main(void) {
printf("%d %d %d\n", STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO);
return 0;
}Beklenen çıktı
0 1 2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Standart tanıtıcıyı yazdır
int fd = STDIN_FILENO;
printf("%d\n", ____);
int fd = STDIN_FILENO;
printf("%d\n", fd);
Açıklama: fd değişkenini yazdırdın.
2 Tanıtıcı değerlerini eşle
| Kavram | Anlamı |
|---|---|
0 |
stdin |
1 |
stdout |
2 |
stderr |
3 |
İlk açık dosya |
3 Standart hatanın dosya tanıtıcısı kaçtır?
- 0
- 1
- 2 Doğru cevap
- 3
Açıklama: stderr STDIN=0, STDOUT=1, STDERR=2 dizisinde 2'dir.