簡介
在C標準庫中,像getchar這樣的數據讀取函式返回一個與符號(宏)EOF相等的值來指明檔案結束的情況發生,EOF的真實值與不同的平台有關(但通常是-1,比如在glibc中),並且不等於任何有效的字元代碼。塊讀取函式返回讀取的位元組數,如果它小於要求讀取的位元組數,就會出現一個檔案結束符。
EOF字元
從一個終端的輸入從來不會真的“結束”(除非設備被斷開),但把從終端輸入的數據分區成多個“檔案”卻很有用,因此一個關鍵的序列被保留下來來指明輸入結束。在UNIX和AmigaDOS中,將擊鍵翻譯為EOF的過程是由終端的驅動程式完成的,因此應用程式無需將終端和其它輸入檔案區分開來。Unix平台的驅動程式在行首傳送一個傳輸結束字元(Control-D,ASCII編碼為為04)來指明檔案結束。在AmigaDOS中,驅動程式傳送一個Control-\來指明檔案結束(而Control-D被用作中斷字元)。要向輸入流中插入一個真正的Control-D字元,用戶需要把一個“引用”命令字元放在它的前面(通常是Control-V,表示下一個字元不作為控制字元,而是按照字面量使用)。
在微軟的DOS和Windows(以及CP/M和許多DEC作業系統)中,讀取數據時終端不會產生EOF。此時,應用程式知道數據源是一個終端(或者其它“字元設備”),並將一個已知的保留的字元或序列解釋為檔案結束的指明;最普遍地說,它是ASCII碼中的替換字元(Control-Z,代碼26)。一些MS-DOS程式,包括部分微軟MS-DOS的shell(COMMAND.COM)和作業系統功能程式(如EDLIN),將文本文檔中的Control-Z視為有意義數據的結尾,並且/或者在寫入文本文檔時將Control-Z添加到文檔末尾。這是由於兩個原因:
•向後兼容CP/M。CP/M的第1版與第2版的檔案系統以128位元組“塊”的倍數記錄檔案長度,所以當有意義數據在一個“塊”的中間結束時,習慣上用Control-Z字元來標記它,此後至塊結尾的位元組為未利用。而MS-DOS檔案系統總會記錄檔案確切的位元組長度,所以在MS-DOS中檔案不再必需以Control-Z字元來標記結尾。
•它使得應用程式在從終端和文本文檔讀取數據時得以使用相同的代碼。
使用Control-D的來歷
在ANSI X3.27-1969磁帶標準中,檔案結束是由 帶標記(英語:tape mark)指明的,它由一個約3.5英寸的間隙和隨後的一個位元組組成,在九軌磁帶中這個位元組包含字元13(十六進制),而在七軌磁帶中包含字元17(八進制)。 帶結尾(英語:end-of-tape),通常縮寫為 EOT,是由兩個帶標記指明的。這是在像IBM 360這樣的機器上使用的標準。指明快到磁帶物理結尾的反射棒也被稱為一個 EOT標記。
作業系統
作業系統(英語:operating system,縮寫作 OS)是管理計算機硬體與軟體資源的電腦程式,同時也是計算機系統的核心與基石。作業系統需要處理如管理與配置記憶體、決定系統資源供需的優先次序、控制輸入與輸出設備、操作網路與管理檔案系統等基本事務。作業系統也提供一個讓用戶與系統互動的操作界面。
作業系統的類型非常多樣,不同機器安裝的作業系統可從簡單到複雜,可從行動電話的嵌入式系統到超級電腦的大型作業系統。許多作業系統製造者對它涵蓋範疇的定義也不盡一致,例如有些作業系統集成了圖形用戶界面,而有些僅使用命令行界面,而將圖形用戶界面視為一種非必要的應用程式。