Конец файла

редактировать
Смещение, соответствующее первому байту, превышающему длину компьютерного файла

В вычислениях, конец файла (EOF ) - это условие в компьютере операционной системе, где чтение из источника данных больше невозможно. Источник данных обычно называется файл или поток.

Содержание
  • 1 Подробности
  • 2 Символ EOF
  • 3 См. Также
  • 4 Ссылки
Подробности

В стандартной библиотеке C функции чтения символов, такие как getchar, возвращают значение, равное символическому значению (макросу) EOF, чтобы указать что произошло условие конца файла. Фактическое значение EOFзависит от реализации (но обычно равно -1, например, в glibc ) и отличается от всех допустимых кодов символов. Функции блочного чтения возвращают количество прочитанных байтов, и если оно меньше запрошенного, то был достигнут конец файла или произошла ошибка (проверка errnoили выделенная функция, например ferrorчасто требуется, чтобы определить какой).

символ EOF

Ввод с терминала на самом деле никогда не «заканчивается» (если только устройство не отключено), но полезно ввести более одного «файла» в терминал, поэтому ключ последовательность зарезервирована для обозначения конца ввода. В UNIX преобразование нажатия клавиши в EOF выполняется драйвером терминала, поэтому программе не нужно отличать терминалы от других входных файлов. По умолчанию драйвер преобразует символ Control-D в начале строки в индикатор конца файла. Чтобы вставить фактический символ Control-D (ASCII 04) во входной поток, пользователь ставит перед ним командный символ «кавычки» (обычно Control-V ). AmigaDOS аналогична, но использует Control- \ вместо Control-D.

В DOS и Windows (а также в CP / M и многих операционных системах DEC, таких как RT-11 или VMS ), чтение с терминала никогда не приведет к EOF. Вместо этого программы распознают, что источник является терминалом (или другим «символьным устройством»), и интерпретируют данный зарезервированный символ или последовательность как индикатор конца файла; чаще всего это ASCII Control-Z, код 26. Некоторые программы MS-DOS, включая части оболочки Microsoft MS-DOS (COMMAND.COM ) и служебные программы операционной системы (такие как EDLIN ), обрабатывают Control-Z в текстовом файле как отметку конца значимых данных и / или добавляют Control-Z в конец при записи текстовый файл. Это было сделано по двум причинам:

  • Обратная совместимость с CP / M. Файловая система CP / M записывала только длины файлов, кратные 128-байтовым «записям», поэтому по соглашению для обозначения конца значимых данных, если они заканчиваются на середина записи. Файловая система MS-DOS всегда записывала точную длину файлов в байтах, поэтому в MS-DOS в этом никогда не было необходимости.
  • Она позволяет программам использовать один и тот же код для чтения ввода из как терминал, так и текстовый файл.

В стандарте ANSI X3.27-1969 магнитная лента конец файла обозначался меткой ленты, которая состояла из промежуток примерно 3,5 дюйма ленты, за которым следует один байт, содержащий символ 13 (шестнадцатеричный) для девятидорожечной ленты и 17 (восьмеричный) для семидорожечной ленты. конец ленты, обычно обозначаемый как EOT, был обозначен двумя метками ленты. Этот стандарт использовался, например, в IBM 360. Светоотражающая полоса , которая использовалась для объявления о приближающемся физическом окончании ленты, также называлась маркером EOT .

См. Также
Ссылки
  1. ^Уэйн Поллок. «Оболочка здесь, обзор документа». hccfl.edu. Архивировано с оригинального 29 мая 2014 года. Проверено 28 мая 2014 г.
  2. ^«Библиотека GNU C». www.gnu.org.
  3. ^«Перенос ленты (до 1977 г.): носители для обмена: спецификации MARC 21 для структуры записи, наборов символов и носителей для обмена (Библиотека Конгресса)». www.loc.gov.
Последняя правка сделана 2021-05-19 10:11:01
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте