CodeBlanks Logo Icon CodeBlanks

unistd.h

  • C kursu
  • İleri seviye
  • Ders 2/83
  • 5 dk

unistd.h içindeki temel fonksiyonları öğrenirsin.

unistd.h başlığı

unistd.h, POSIX'in temel başlık dosyasıdır. İçinde dosya tanıtıcıları, süreçler ve düşük seviyeli I/O için fonksiyonlar tanımlanır. En sık kullandıkların: read, write, close, fork ve getpid.

Bu fonksiyonlar stdio.h'daki fread/fwrite'tan farklıdır: arabellek kullanmazlar, doğrudan tanıtıcı ile çalışırlar. Her çağrı ssize_t döndürür; bu, okunan ya da yazılan bayt sayısıdır. Hata durumunda -1 döner.

ssize_t ve errno

POSIX I/O fonksiyonları ssize_t türünde değer döndürür. Bu tür imzalı bir tamsayıdır: başarıda pozitif, dosya sonunda 0, hatada -1.

Hata olduğunda global errno değişkeni ayarlanır. errno'yu <errno.h> ile dahil edip okuyabilirsin. Örneğin read hata döndürdüğünde errno EAGAIN veya EBADF olabilir. Her zaman dönüş değerini denetle; -1 ise errno'ya bak.

Uygulama write ile çıktı ver

const char *msg = "Merhaba\n"; ile bir ileti tanımla. write(1, msg, 8) ile bu iletiyi stdout'a yaz. 8, iletilen bayt sayısıdır (Merhaba + yeni satır).

Başlangıç kodu

main.c
#include <stdio.h>
#include <unistd.h>

// msg değişkenini tanımla
// write ile stdout'a yaz

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <unistd.h>

int main(void) {
    const char *msg = "Merhaba\n";
    write(1, msg, 8);
    return 0;
}

Beklenen çıktı

Merhaba

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Fonksiyonları amaçlarına eşle

Kavram Anlamı
read Dosyadan okur
write Dosyaya yazar
close Tanıtıcıyı kapatır
getpid Süreç numarası verir

2 write(1, buf, n) çağrısında 1 neyi belirtir?

  • Dosya adını
  • Dosya tanıtıcısını Doğru cevap
  • Bayt sayısını
  • Arabellek boyutunu

Açıklama: 1, stdout tanıtıcısını belirtir.

3 write çağrısı

Soru
ssize_t n = ____(1, msg, 8);
Cevap
ssize_t n = write(1, msg, 8);

Açıklama: write, tanıtıcıya veri yazar.

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