пятница, 6 марта 2009 г.

Почему текстовые файлы оканчиваются символом Ctrl+Z?

Это перевод Why do text files end in Ctrl+Z? Автор: Реймонд Чен.

Вообще-то, текстовые файлы не обязаны оканчиваться на Ctrl+Z, но это соглашение сохраняется в определённых кругах (хотя, к счастью, сегодня эти круги являются небольшими).

Эта история отправляет нас во времена CP/M - операционной системы, чьим последователем явилась MS-DOS (поскольку 8086 являлся наследником для 8080, то вполне естественно, что операционная система для 8086 будет рассматривать себя в качестве преемника для основной операционной системы на 8080).

В CP/M файлы хранились в "секторах" по 128 байт каждый. Если ваш файл имел размер в 64 байта, то он хранился в одном полном секторе. Проблема была в том, что операционная система хранила размер файла в секторах. Поэтому, если размер вашего файла не был кратен 128 байтам, то вам нужно было как-то указать, где был "настоящий" конец файла.

И тут на сцену выходит Ctrl+Z.

По договоренности, неиспользуемые байты в конце последнего сектора заполнялись символами Ctrl+Z. Согласно этой договорённости, если ваша программа читает файл, то она должна останавливаться, когда она встречает символ Ctrl+Z, т.к. это означает, что она теперь читает дополнение.

Для сохранения совместимости с CP/M MS-DOS продолжала использовать соглашение с Ctrl+Z. Поэтому, если вы переносили файлы со старой машины с CP/M на свой новый компьютер с MS-DOS, то они не оканчивались мусором, именно благодаря выполнению этого соглашения.

Реально же Ctrl+Z уже давно не нужен; MS-DOS хранит размеры файлов в байтах, а не в секторах. Но эта договорённость кое-где всё ещё сохраняется - например, в команде "COPY".

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.