0%
Ardovski ~ cmd
Ardovski ~ logs
CV'ye Dön
42 Türkiye Müfredat Projesi

Get_Next_Line

Herhangi bir dosya tanımlayıcısından (file descriptor) veya standart girdiden, belirtilen tampon boyutuyla (BUFFER_SIZE) satır satır veri okuyan ve her çağrıldığında belleği koruyarak sıradaki satırı döndüren optimize bir C fonksiyonudur.

C Programming Low-Level I/O File Descriptors Static Variables Dynamic Memory Allocation Buffer Management Memory Safety GNU Compiler Collection (GCC)

Proje Detayları

Dosya sistemleri, sistem çağrıları (system calls) ve C dilinde bellek kalıcılığı (memory persistence) konularında derinleşmek amacıyla geliştirilmiş kritik bir sistem fonksiyonudur. Projenin temel zorluğu, read fonksiyonunun her çağrıda diskten ne kadar veri okuyacağını belirleyen BUFFER_SIZE parametresinin derleme zamanında (compile-time) tamamen dinamik olarak dışarıdan verilmesidir. Fonksiyonun ardışık çağrılar arasında okuma konumunu ve kalan veriyi kaybetmemesi adına statik değişken (static variable) mimarisi ve dinamik heap yönetimi kullanılmıştır. Okunan veriler, performans optimizasyonu amacıyla geçici bir arabellekte tutulur, satır sonu karakteri (\n) veya dosya sonu (EOF) gelene kadar dinamik olarak büyüyen bir string yapısında birleştirilir. Projede bellek sızıntılarını (memory leaks) ve sarkan göstericileri (dangling pointers) tamamen engellemek adına son derece sıkı bir free ve hata yönetimi mekanizması kurgulanmıştır.