CodeBlanks Logo Icon CodeBlanks

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

main.c
#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

main.c
#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

Soru
int fd = open("/dev/null", O_WRONLY | O_CREAT, ____);
Cevap
int fd = open("/dev/null", O_WRONLY | O_CREAT, 0644);

Açıklama: 0644, sahibine oku-yaz, başkalarına oku izni verir.

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