Tamponların Boşaltılması
Önceki Akım Tamponlama Sonraki
Tamponların Boşaltılması
Boşaltma, bir tamponlu akımın biriken karakterleri bir dosyaya çıktılamasıdır. Bir akım üzerindeki tamponlu çıktının özdevinimli olarak boşaltılması çeşitli durumlarda ortaya çıkar:
  • Çıktı tamponu doludur ve çıktılama yapmayı deniyorsunuzdur.
  • Akım kapatılırken. Bkz. Akımların Kapatılması.
  • exit çağrısı ile uygulamayı sonlandırırken. Bkz. Normal Sonlandırma.
  • Akım satır tamponludur ve bir satırsonu karakteri yazılmıştır.
  • Bir akımın bir veriyi dosyadan okurken bir girdi işleminin varlığında.
Bunların dışında bir tamponlu çıktıyı boşaltmak isterseniz stdio.h başlık dosyasında bildirilmiş olan fflush işlevi çağrılır.
int fflush
(FILE *akım)
işlev
Bu işlev akım üzerindeki herhangi bir tamponlu çıktının dosyaya boşaltılmasına sebep olur. Eğer akım bir boş gösterici ise fflush, tamponlu çıktının tüm açık çıktı akımlarına boşaltılmasına sebep olur.
Bir yazma hatası oluşursa, bu işlev EOF döndürür. Aksi takdirde sıfır döner.
int fflush_unlocked
(FILE *akım)
işlev
Akımı kilitlememesi dışında fflush işlevi ile aynıdır.
fflush işlevi o an açık olan tüm akımları boşaltmak için kullanılabilir. Bu bazı durumlarda kullanışlıdır ama bazı durumlarda da gereklidir. Örneğin, uçbirimden girdi bekleyen bir uygulama için, uçbirimde tüm çıktının görünür olması istenir. Fakat bu sadece satır tamponlu akımlar için anlamlıdır. Solaris özellikle bu durum için bir işlev içerir. Bu işlev GNU C kütüphanesinde bir takım şekillerde hep vardı ama hiçbir zaman resmen var denilmedi.
void _flushlbf
(void)
işlev
_flushlbf işlevi o an açık bulunan tüm satır tamponlu akımları boşaltır.
Bu işlev stdio_ext.h başlık dosyasında bildirilmiştir.
Uyumluluk Bilgisi
Satır yönlenimli girdi ve çıktıya saplantılı olduğu bilinen kafa travması geçirmiş bazı işletim sistemlerinde satır tamponlu çıktının boşaltılması bir satır sonu karakterinin de yazılmasına sebep olur. Bereket versin ki bu "özellik" giderek daha az kullanılır olmaya doğru gidiyor. GNU sistemlerinde bundan dolayı kaygılanmanıza gerek yok.
Bazı durumlarda bekleyen çıktının boşaltılmak yerine unutulması daha kullanışlı olabilir. Eğer aktarımın bedeli yüksekse ve geçerli bir sebep yoksa çıktılama gerekmez. Bu gibi durumlar için Solaris’te standart dışı bir işlev vardır ve GNU kütüphanesinde de bulunmaktadır.
void __fpurge
(FILE *akım)
işlev
__fpurge işlevi akım akımının tamponunun temizlenmesini sağlar. Akım zaten okuma kipindeyse tampondaki tüm girdi kaybolur. Çıktılama kipindeyse tamponlu çıktı aygıta (veya igili saklama alanına) yazılmaz ve tampon temizlenir.
Bu işlev stdio_ext.h başlık dosyasında bildirilmiştir.
Önceki Üst Ana Başlık Sonraki
Tamponlama Kavramları Başlangıç Tamponlama Çeşidinin Seçimi
Bir Linux Kitaplığı Sayfası