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 дюйма ленты, за которым следовал один байт, содержащий символ 0x13(шестнадцатеричный) для девятидорожечных лент и 017(восьмеричный) для семидорожечных лент . [5] Конец ленты , обычно сокращенно обозначаемый как EOT , обозначался двумя метками ленты. Этот стандарт использовался, например, на IBM 360. Отражающая полоса , которая использовалась для объявления приближающегося физического конца ленты, также называлась маркером EOT .

Смотрите также

Ссылки

  1. ^ Поллок, Уэйн. «Обзор документа Shell Here». hccfl.edu. Архивировано из оригинала 29-05-2014 . Получено 28-05-2014 .
  2. ^ «Библиотека GNU C». www.gnu.org .
  3. ^ "Таблица характеристик устройств ввода-вывода — консоли или телетайпы". Руководство по многопрограммной системе PDP-6 (PDF) . Мейнард, Массачусетс, США: Digital Equipment Corporation (DEC). 1965. стр. 43. DEC-6-0-EX-SYS-UM-IP-PRE00. Архивировано (PDF) из оригинала 14.07.2014 . Получено 10.07.2014 .(1+84+10 страниц)
  4. ^ "5.1.1.1. Зависящие от устройства функции - Режимы данных - Полнодуплексное программное обеспечение A(ASCII) и AL(ASCII Line)". Справочное руководство PDP-10: Связь с монитором - Мониторы с разделением времени (PDF) . Том 3. Digital Equipment Corporation (DEC). 1969. стр. 5-3 – 5-6 [5-5 (431)]. Архивировано (PDF) из оригинала 2011-11-15 . Получено 2014-07-10 .(207 страниц)
  5. ^ «Передача на ленту (до 1977 г.): Обменные носители: спецификации MARC 21 для структуры записи, наборов символов и обменных носителей (Библиотека Конгресса)». www.loc.gov .