Dosyanın sonu - End-of-file

Olarak işlem , sonu dosyası ( EOF ) bir bilgisayar bir durumdur işletim sistemi daha fazla veri, bir veri kaynağından okunabilir. Veri kaynağına genellikle dosya veya akış adı verilir .

Detaylar

Olarak Cı standart kitaplığı , örneğin karakter okuma fonksiyonları getchar dönüş değeri sembolik bir değer (makro) için eşit EOFbir uç dosyasonu durumu meydana geldiğini gösterir. EOFöğesinin gerçek değeri uygulamaya bağlıdır ve negatif olmalıdır (ancak glibc'deki gibi genellikle -1'dir ). Blok okuma işlevleri, okunan bayt sayısını döndürür ve bu istenenden daha azsa, dosyanın sonuna ulaşıldı veya bir hata oluştu ( genellikle hangisini belirlemek için gerekli olduğu errnogibi, kontrol veya atanmış işlev ferror).

EOF karakteri

Bir terminalden gelen girdi hiçbir zaman gerçekten "bitmez" (cihaz bağlantısı kesilmediği sürece), ancak bir terminale birden fazla "dosya" girmek yararlıdır, bu nedenle girişin sonunu belirtmek için bir tuş dizisi ayrılmıştır. Gelen UNIX bir program diğer giriş dosyaları terminalleri ayırt etmek gerekir böylece EOF'a tuş translasyon terminal sürücü tarafından gerçekleştirilir. Varsayılan olarak sürücü, satırın başındaki Control-D karakterini dosya sonu göstergesine dönüştürür. Giriş akışına gerçek bir Control-D (ASCII 04) karakteri eklemek için, kullanıcı bunun önüne bir "alıntı" komut karakteri (genellikle Control-V ) gelir. AmigaDOS benzerdir ancak Control-D yerine Control-\ kullanır.

Gelen DOS ve Windows'un (ve CP / M ve çok sayıda Aralık gibi işletim sistemleri RT-11 ya da VMS ) terminalden gelen, okuma, bir EOF üretmeyecek. Bunun yerine, programlar kaynağın bir uçbirim (veya başka bir "karakter aygıtı") olduğunu kabul eder ve belirli bir ayrılmış karakteri veya diziyi bir dosya sonu göstergesi olarak yorumlar; en yaygın olarak bu bir ASCII Control-Z , kod 26'dır . Microsoft MS-DOS kabuğunun ( COMMAND.COM ) ve işletim sistemi yardımcı programlarının ( EDLIN gibi ) bölümleri dahil olmak üzere bazı MS-DOS programları, bir Control-Z'yi ele alır. anlamlı verilerin sonunu işaretlemek olarak bir metin dosyasına ekleyin ve/veya bir metin dosyası yazarken sonuna bir Control-Z ekleyin. Bu iki nedenden dolayı yapıldı:

  • CP/M ile geriye dönük uyumluluk . CP/M dosya sistemi , dosyaların uzunluklarını yalnızca 128 baytlık "kayıtların" katları halinde kaydetti, bu nedenle, geleneksel olarak, bir kaydın ortasında sona ermişse anlamlı verilerin sonunu işaretlemek için bir Control-Z karakteri kullanıldı. MS-DOS dosya sistemi bu MS-DOS üzerinde gerekli değildi bu yüzden her zaman, dosyaların tam bayt uzunlukta kaydetti.
  • Programların hem bir terminalden hem de bir metin dosyasından girişi okumak için aynı kodu kullanmasına izin verir.

ANSI X3.27-1969 manyetik bant standardında, dosyanın sonu, yaklaşık 3.5 inçlik bir bant boşluğundan ve ardından dokuz parça için 13 (altıgen) karakterini içeren tek bir bayttan oluşan bir bant işaretiyle belirtildi. kasetler ve yedi kanallı kasetler için 17 (sekizlik) . Sonu bant olarak genellikle kısaltılan, EOT , iki bant işaretleriyle belirtilmiştir. Bu, örneğin IBM 360'ta kullanılan standarttı . Yansıtıcı şerit bant fiziksel ucunu yaklaşan duyurmak için kullanılmıştır da denilen EOT işaretleyici.

Ayrıca bakınız

Referanslar

  1. ^ Wayne Pollock. "Shell Here Belgesine Genel Bakış" . hccfl.edu. Arşivlenmiş orijinal 2014-05-29 tarihinde . 2014-05-28 alındı .
  2. ^ "GNU C Kütüphanesi" . www.gnu.org .
  3. ^ "Teyp Transferi (1977 Öncesi): Değişim Ortamı: Kayıt Yapısı, Karakter Kümeleri ve Değişim Ortamı için MARC 21 Spesifikasyonları (Kongre Kütüphanesi)" . www.loc.gov .