Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Изучаем Perl - Шварц Р.

Шварц Р., Кристиансен Т. Изучаем Perl — Москва, 2002. — 324 c.
Скачать (прямая ссылка): izuchaemperl2002.djvu
Предыдущая << 1 .. 64 65 66 67 68 69 < 70 > 71 72 73 74 75 76 .. 124 >> Следующая

каталога допускается наличие только одного имени от корня, ссылки из
"точечного" файла на данный каталог, и семейства жестких ссылок "точка-
точка" из каждого из его подкаталогов. Если вы попытаетесь
13. Манипулирование файлами и каталогами
175
создать еще одну жесткую ссылку на каталог, то получите сообщение об
ошибке (если только вы не привилегированный пользователь - тогда вам
придется провести всю ночь за восстановлением своей поврежденной файловой
системы).
Символическая ссылка - это файл особого вида, который содержит в качестве
данных путевое имя. Когда этот файл открывается, операционная система
рассматривает его содержимое как заменяющие символы для данного путевого
имени и заставляет ядро еще немного порыскать по дереву каталогов,
используя новое имя.
Например, если символическая ссылка fred содержит имя barney, то указание
открыть файл fred - это, на самом деле, указание открыть файл barney.
Если barney - каталог, то fred/wilma обозначает barney/wilma.
Содержимое символической ссылки (т.е. имя, на которое указывает
символическая ссылка) не обязательно должно обозначать существующий файл
или каталог. В момент, когда создается fred, существование barney вовсе
не обязательно. Более того, barney может никогда и не появиться!
Содержимое символической ссылки может указывать на путь, который ведет за
пределы текущей файловой системы, поэтому можно создавать символическую
ссылку на файл, находящийся в другой смонтированной файловой системе.
Отслеживая новое имя, ядро может натолкнуться на другую символическую
ссылку. Эта новая ссылка содержит новые элементы отслеживаемого пути.
Одни символические ссылки могут указывать на другие символические ссылки.
Как правило, допускается до восьми уровней символических ссылок, но на
практике такое встречается редко.
Жесткая ссылка защищает содержимое файла от уничтожения (потому что она
считается одним из имен файла). Символическая же ссылка не может уберечь
содержимое файла от исчезновения. Символическая ссылка может указывать на
другие смонтированные файловые системы, а жесткая - не может. Для
каталога может быть создана только символическая ссылка.
Создание жестких и символических ссылок в Perl
В ОС UNIX жесткие ссылки создают с помощью команды In. Например, команда
In fred bigdumbguy
позволяет создать жесткую ссылку из файла fred (который должен
существовать) на bigdumbguy. В Perl это выражается так:
link("fred","bigdumbguy") I I die "cannot link, fred to bigdumbguy";
Функция link принимает два параметра - старое имя файла и новый псевдоним
для этого файла. Если ссылка создана успешно, link возвращает значение
''истина". Как и команда mv, UNIX-команда In позволяет указывать в
качестве псевдонима только каталог (без имени файла). Функция link
176
Изучаем PERL
(как и функция rename) не настолько умна, поэтому вы должны указывать
полное имя файла явно.
При создании жесткой ссылки старое имя не может быть именем каталога*, а
новый псевдоним должен указывать на ту же файловую систему. (Эти
ограничения частично обусловили необходимость создания символических
ссылок.)
В системах, которые поддерживают символические ссылки, в команде In может
использоваться опция -s, которая создает символическую ссылку. Например,
если необходимо создать символическую ссылку из barney на neighbor (чтобы
обращение к neighbor фактически было обращением к barney), следует
использовать команду
In -s barney neighbor
В Perl для этого применяется функция symlink:
symlink ( "barney", "neighbor") | | die "cannot symlink.
to neighbor";
Отметим, что barney не обязательно должен существовать - ни сейчас, ни в
будущем. В этом случае обращение к neighbor возвратит нечто туманное
вроде No such file or directory.
Когда вы вызываете Is -I для каталога, содержащего символическую ссылку,
вы получаете как имя этой ссылки, так и информацию о том, куда она
указывает. В Perl эту же информацию можно получить с помощью функции
readlink, которая по принципу работы удивительно похожа на системный
вызов с тем же именем: она возвращает имя, на которое указывает заданная
символическая ссылка. Так, в результате выполнения операции
if (defined($x = readlink("neighbor")) ) {
print "neighbor points at ' $x'\n";
вы получите сведения о barney, если все нормально. Если выбранная
символическая ссылка не существует, не может быть прочитана или вообще не
является таковой, readlink возвращает undef (т.е. в данном случае "ложь")
- именно поэтому мы ее здесь и проверяем.
В системах, не поддерживающих символические ссылки, обе функции - и
symlink, и readlink - потерпят неудачу и выдадут сообщения об ошибке.
Perl может "спрятать" от вас некоторые зависящие от конкретной системы
особенности, но некоторые все равно проявляются. Это как раз одна из них.
* Если только вы не привелигированный пользователь и не любите
забавляться с командой fsck, восстановливая поврежденную файловую
систему.
13. Манипулирование файлами и каталогами
Предыдущая << 1 .. 64 65 66 67 68 69 < 70 > 71 72 73 74 75 76 .. 124 >> Следующая