Coredump Online

18.3.06

Домашнее задание

Попробуйте под Windows создать файл или каталог с именем prn

Попросите у знакомого линуксоида, чтобы он вам записал на диск или флешку файл или каталог с именем prn. А теперь попробуйте что-нибудь прочитать из него.

Ну как?

Вот к чему приводит попытка сделать пародию на Unix

Update А дело тут вот в чем. Когда создавался DOS, то в нём многое делалось примерно как в Unix, но через задницу. На пример, в Unix каталоги разделяются слэшем ("/"). а в DOS -- бэкслэшем ("\"). В результате эти бэкслэши попортили много нервов программистам на C и многих других языках, потому как часто символ "\" приходится в программе обозначать как "\\".

А ещё в Unix каждое устройство представляется файлом. К примеру, если писать в файл /dev/dsp, который на самом деле соответствует звуковой карте, то услышите шипение или визги, а то и ещё чего-нибудь. А файл /dev/cdrom соответствует приводу компакт-дисков, или если вставить какой-нибудь компакт, и скопировать куда-нибудь файл /dev/cdrom, то получится образ этого самого диска. Потом при монтировании файловой системы можно указать файл с этим самым образом вместо /dev/cdrom -- получится то же самое, что и при использовании виртуального CD-ROM в Windows. Только в Windows нужно еще и ставить дополнительные программы и драйвера, а в Unix всё будет работать на стандартных утилитах.

Идею "файл -- это устройство" решили использовать и в DOS. По-этому если в DOS, к примеру, писать в файл "con", то данные на самом деле будут просто выводиться на экран; а если писать в файл "prn", то -- соответственно -- на принтер.

В Unix файлы устройств находятся в некоторой части общей файловой системы (как правило, в /dev). В DOS вместо единой файловой системы придумали разбиение на логические диски A:, C:, D: и так далее. По логике вещей файлы устройств не могут относиться к какому-нибудь логическому диску. А потому, в каком бы каталоге мы не обратились к prn, это не будет файл prn в этом каталоге, а будет это специальный файл-устройство, соответствующее принтеру. В результате получается, что ни в каком каталоге нельзя иметь файлы с именем prn, con, null и некоторыми другими, дабы бедный DOS не путался среди обычных файлов и файлов устройств. В Windows для совместимости глюков это ограничение сохранилось до настоящего времени.

Самые замечательные устройства в Unix -- это /dev/null, у которого есть аналог в DOS -- просто null (сколько не писать данных в этот файл, они будут просто исчезать) и /dev/urandom, который служит источником случайных данных(цитата в тему)

2 Comments:

  • на самом деле нормальный Linux не разрешит создать файл с таким именем на DOSовском разделе. Так что виндузятника ничего не грозит.

    By Blogger Michael de`OZ, at 20/3/06 13:40  

  • В моем случае я сначала создал такой каталог под Linux-ом, потом записал его на CD, а потом попытался прочесть его под Windows. И только после этого понял, что я наделал 8)
    Удивительно другое -- этот конфликт имён растёт из DOS, и сохранился до Windows XP!

    By Blogger LXj, at 20/3/06 16:22  

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

<< Home