open ve close
- C kursu
- İleri seviye
- Ders 4/83
- 5 dk
open ve close ile dosya yönetimini öğrenirsin.
open fonksiyonu
open, bir dosyayı açar ve dosya tanıtıcısı döndürür. İki biçimi vardır: open(path, flags) ve open(path, flags, mode). İkinci biçim O_CREAT ile yeni dosya oluştururken kullanılır.
Bayraklar dosyanın nasıl açılacağını belirler: O_RDONLY salt okunur, O_WRONLY salt yazılır, O_RDWR hem oku hem yaz. O_CREAT dosya yoksa oluşturur, O_TRUNC varsa içini boşaltır. Birden çok bayrak | ile birleştirilir.
close ve hata denetimi
close(fd), açık bir dosya tanıtıcısını serbest bırakır. İşlem bittiğinde mutlaka kapat; değilse tanıtıcı sızıntısı olur ve süreç sınırı aşılabilir.
open hata durumunda -1 döndürür ve errno ayarlar. Başarıda negatif olmayan bir tanıtıcı verir. Her zaman dönüş değerini denetle: if (fd < 0) ile hatayı yakala. close da hata döndürebilir; onu da denetlemek iyi bir alışkanlıktır.
Uygulama open ve close uygula
open("/dev/null", O_WRONLY) ile bir tanıtıcı al. if (fd < 0) ile hata denetle; hata varsa printf("hata\n") ve return 1. Başarıda close(fd) ve printf("tamam\n") ile bitir.
Başlangıç kodu
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
// /dev/null'ı aç
// Hata denetle
// Kapat ve tamam yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main(void) {
int fd = open("/dev/null", O_WRONLY);
if (fd < 0) {
printf("hata\n");
return 1;
}
close(fd);
printf("tamam\n");
return 0;
}Beklenen çıktı
tamam
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 open bayraklarını eşle
| Kavram | Anlamı |
|---|---|
O_RDONLY |
Salt okunur |
O_WRONLY |
Salt yazılır |
O_RDWR |
Oku ve yaz |
O_CREAT |
Dosya oluştur |
2 open başarısız olursa ne döndürür?
- 0
- 1
- Dosya tanıtıcısı
- -1 Doğru cevap
Açıklama: open hatada -1 döndürür ve errno ayarlar.
3 Dosya izni
int fd = open("/dev/null", O_WRONLY | O_CREAT, ____);
int fd = open("/dev/null", O_WRONLY | O_CREAT, 0644);
Açıklama: 0644, sahibine oku-yaz, başkalarına oku izni verir.