Jump to content

Конец файла

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

Подробности [ править ]

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

Символ EOF [ править ]

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

В DOS и Windows (а также в CP/M и многих операционных системах DEC , таких как монитор PDP-6) , [3] РТ-11 , ВМС или ТОПС-10 [4] ), чтение с терминала никогда не приведет к получению EOF. Вместо этого программы распознают, что источником является терминал (или другое «символьное устройство»), и интерпретируют данный зарезервированный символ или последовательность как индикатор конца файла; чаще всего это ASCII Control-Z , код 26. Некоторые программы MS-DOS, включая части оболочки Microsoft MS-DOS ( COMMAND.COM ) и служебные программы операционной системы (такие как EDLIN ), обрабатывают Control-Z в текстовом файле как отметка конца значимых данных и/или добавьте Control-Z в конец при записи текстового файла. Это было сделано по двум причинам:

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

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

См. также [ править ]

Ссылки [ править ]

  1. ^ Поллок, Уэйн. «Обзор документа Shell Here» . hccfl.edu. Архивировано из оригинала 29 мая 2014 г. Проверено 28 мая 2014 г.
  2. ^ «Библиотека GNU C» . www.gnu.org .
  3. ^ «Таблица характеристик устройств ввода-вывода — консоль или телетайп». Руководство по системе мультипрограммирования PDP-6 (PDF) . Мейнард, Массачусетс, США: Корпорация цифрового оборудования (DEC). 1965. с. 43. DEC-6-0-EX-SYS-UM-IP-PRE00. Архивировано (PDF) из оригинала 14 июля 2014 г. Проверено 10 июля 2014 г. (1+84+10 страниц)
  4. ^ «5.1.1.1. Функции, зависящие от устройства — Режимы данных — Полнодуплексное программное обеспечение A (ASCII) и AL (строка ASCII)». Справочное руководство PDP-10: Связь с монитором — Мониторы с разделением времени (PDF) . Том. 3. Корпорация цифрового оборудования (DEC). 1969. С. 5-3 – 5-6 [5-5 (431)]. Архивировано (PDF) из оригинала 15 ноября 2011 г. Проверено 10 июля 2014 г. (207 страниц)
  5. ^ «Передача на ленте (до 1977 г.): Носители обмена: Спецификации MARC 21 для структуры записей, наборов символов и носителей обмена (Библиотека Конгресса)» . www.loc.gov .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3213afab0503d0a4f03cb4ae3c53bb10__1680277800
URL1:https://arc.ask3.ru/arc/aa/32/10/3213afab0503d0a4f03cb4ae3c53bb10.html
Заголовок, (Title) документа по адресу, URL1:
End-of-file - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)