stringtranslate.com

Конец файла

В вычислениях конец файла ( 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] RT-11 , VMS или TOPS-10 [4] ) чтение с терминала никогда не приведет к созданию EOF. Вместо этого программы распознают, что источником является терминал (или другое «символьное устройство»), и интерпретируют данный зарезервированный символ или последовательность как индикатор конца файла; чаще всего это ASCII Control-Z , код 26. Некоторые программы MS-DOS, включая части оболочки Microsoft MS-DOS ( COMMAND.COM ) и служебные программы операционной системы (такие как EDLIN ), обрабатывают Control-Z в текстовом файле как отметка конца значимых данных и/или добавьте Control-Z в конец при записи текстового файла. Это было сделано по двум причинам:

В стандарте магнитной ленты 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 .