跳至內容

檔案結尾

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

檔案結尾(英語:End of File,縮寫為 EOF), 是作業系統無法度對資料來源讀閣較濟資料的情形。資料源通常做檔案抑是串流。

佇咧 C 標準函式庫內底,像 getchar 按呢的資料讀函式倒轉去一个佮符號(巨集)` EOF ` 相等的值來指明檔案結束的情形發生,` EOF ` 的真實值佮無仝的平台有關係(但是通常伊是-一,比如講佇 glibc 中), 並且無等於任何有效的字元代碼。塊讀取函式返回讀取的位元組數,若是伊小於要求讀取的位元組數,就會出現一个檔案結束符。

EOF 字元

終其尾的輸入通常是袂結束的,除非裝置予人斷去。若想欲予終端結束,遐爾會當輸入 EOF 字元使之結束。檔案通常以 EOF 字元結尾,所致會當通過輸入檔案使終端的輸入結束。因為 EOF 字元是袂使輸入的,通常通過輸入 / dev / null 以達到輸入 EOF 的效果。

佇咧 UNIX 和 AmigaDOS 中,會用鍵翻譯做 EOF 的過程是對終端的驅動程式完成的,因此應用程式無需要共終端佮其他輸入檔案區分開來。Unix 平台的驅動程式在行首傳送一个傳輸結束字元(` Control ` + ` D `,ASCII 編碼為四)來指明檔案結束。佇咧 AmigaDOS 中,驅動程式傳送一个 ` Control ` + ` \ ` 來指明檔案結束(而且 ` Control ` + ` D ` 被用作中斷字元)。 欲共輸入流內底插一个真正的 ` Control ` + ` D ` 字元,使用者需要共一个「參照」命令字元囥咧伊的頭前(通常是 Control-V,表示後一字元無作為控制字元,是照字面的量來使用)。

佇咧微軟仔 DOS 和 Windows(以及 CP / M 佮真濟 DEC 作業系統)中,讀資料的時陣終其尾袂產生 EOF。現此時,應用程式知影資料來源是一个終端(抑是按怎「字元裝置」), 並將一个已經知的保留的字元或者是序列解說為檔案結束的指明;上普遍的講,伊是 ASCII 碼中的替換字元(` Control ` + ` Z `,代碼二十六)。 一寡仔 MS-DOS 程式,包括部份微軟 MS-DOS 的 shell(COMMAND . COM)和作業系統功能程式(如 EDLIN), 共文字文件內底的 ` Control ` + ` Z ` 當做有意義資料的結尾,並且 / 抑是咧寫入去文字文件的時陣將 Control-Z 添加到文件的尾仔。這是因為兩个原因:

  • 向下跤相容 CP / M。CP / M 的頭一版佮頭二版的檔案系統以一百二十八位元組「塊」的倍數記錄檔案長度,所以當有意義資料佇一个「塊」的中央煞的時陣,慣勢上用 ` Control ` + ` Z ` 字元來共標記,此後至塊結尾的位元組為無利用。而且 MS-DOS 檔案系統總會記錄檔案確切的位元組長度,所以佇咧 MS-DOS 中檔案無欲閣一定愛用 ` Control ` + ` Z ` 字元來標記結尾。
  • 伊會當予應用程式佇終其尾佮文字文件讀資料的時陣會當使用仝款的代碼。

使用 Control-D 的來歷

佇咧 ANSI X 三石二七石一千九百六十九磁帶標準中,檔案結束是由帶標記(英語:tape mark)指明的,伊由一个約三堵五英寸的間隙佮隨後的一个位元組組成,佇九枝磁帶中這个位元組包含字元十三(十六進位), 抑若佇七枝磁帶中包含字元十七(八進位)。帶結尾(英語:end-of-tape), 通常縮寫為EOT,是由兩个帶標記指明的。這是咧像 IBM 三百六十按呢的機器上使用的標準。指明欲到磁帶物理結尾的反射棒嘛予人稱做一个EOT標記。

參考