Брайан Керниган - UNIX — универсальная среда программирования
- Название:UNIX — универсальная среда программирования
- Автор:
- Жанр:
- Издательство:Финансы и статистика
- Год:1992
- Город:Москва
- ISBN:5-289-00253-4
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Брайан Керниган - UNIX — универсальная среда программирования краткое содержание
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями shell.
Для программистов-пользователей операционной системы UNIX.
UNIX — универсальная среда программирования - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Каталог /lib
(library — библиотека) включает основные части компилятора языка Си, такие, как /lib/cpp
— препроцессор Си, /lib/libc.a
— библиотека стандартных функций Си.
Каталог /tmp
(temporaries — временное) представляет собой хранилище для временных файлов, создаваемых при выполнении программы.
Например, когда вы вызываете редактор, он создает файл с именем типа /tmp/e00512
, что позволяет иметь свою копию редактируемого файла, а не работать с оригиналом. Редактор мог бы, конечно, создать копию в вашем текущем каталоге, но есть причина для преимущественного использования /tmp
: хотя это и маловероятно, в вашем каталоге уже мог присутствовать файл e00512
. Далее каталог /tmp
автоматически очищается при запуске системы, так что в случае системной аварии в вашем каталоге не появится ненужный файл. Часто каталог /tmp
организуется на диске для обеспечения быстрого доступа к нему. Однако здесь возникает проблема: если сразу несколько программ создают файлы в каталоге /tmp
, их файлы могут перепутаться. Именно поэтому редактор ed
выбирает особое имя; оно построено таким образом, чтобы никакая другая программа не могла выбрать то же имя для временного файла. В гл. 5 и 6 будет показан способ достижения этого.
Каталог /usr
называется файловой системой пользователей, хотя он может быть мало связан с файлами настоящих пользователей системы. На своей машине мы используем исходные каталоги /usr/bwk
и /usr/rob
, но у вас часть иерархии, начинающаяся с /usr
, может быть другой. Независимо от того, находятся ли ваши файлы в каталоге, вложенном в /usr
, вы всегда найдете в нем что-нибудь интересное (если нет местной специфики). Так же, как и в каталоге /
, здесь есть каталоги с именами /usr/bin
, /usr/lib
и /usr/tmp
. Эти каталоги имеют назначение, сходное со своими тезками в каталоге /
, но содержат программы, менее критичные для системы. Например, программа nroff
обычно находится в /usr/bin
, а не в /bin
, библиотеки компилятора с Фортрана располагаются в /usr/lib
. Правда, "критичными" для разных систем считаются разные программы. Некоторые системы, такие, как широко распространенная седьмая версия, все программы хранят в /bin
, не имея дела с /usr/bin
. В других системах каталог /usr/bin
разбивается на два каталога в зависимости от частоты использования.
Кроме того, в /usr
есть каталог /usr/adm
со справочной информацией и /usr/dict
, содержащий небольшой словарь (см. spell(1)
). Диалоговое справочное руководство хранится в /usr/man
(см. в качестве примера /usr/man/man1/spell.1
). Если в вашей системе имеются исходные тексты, вы, вероятно, найдете их в /usr/src
.
Вероятно, целесообразно потратить немного времени на исследование файловой системы, особенно каталога /usr
, чтобы вам было понятно, как она устроена и где что можно найти.
2.7 Файлы устройств
В нашем кратком обзоре мы пропустили каталог /dev
по той причине, что файлы в нем дают хорошее общее представление о файлах вообще. Как можно догадаться по его названию, этот каталог содержит файлы устройств ("device" — устройство).
К привлекательным чертам системы UNIX относится форма ее работы с периферийными устройствами: дисками, магнитными лентами, принтерами, терминалами и т.п. Вместо того чтобы иметь специальные системные программы, например программу чтения с магнитной ленты, достаточно создать файл с именем /dev/mt0
(опять-таки местные соглашения могут различаться). В ядре обращения к этому файлу преобразуются в машинные команды обращения к магнитной ленте, как если бы программа читала /dev/mt0
, выдавая содержимое магнитной ленты, подключенной к устройству. Например, команда
$ cp /dev/mt0 junk
копирует содержимое магнитной ленты в файл junk
. Команда cp
не имеет понятия о специфике файла /dev/mt0
; для нее он является обычным файлом, т.е. просто последовательностью байтов.
Файлы устройств в чем-то подобны зверинцу, где каждая особь чем-нибудь отличается от остальных, но основные характеристики применимы ко всем. Ниже приведен сокращенный список нашего каталога /dev
:
$ ls -l /dev
crw--w--w- 1 root 0, 0 Sep 27 23:09 console
crw-r--r-- 1 root 3, 1 Sep 27 14:37 fcmem
crw-r--r-- 1 root 3, 0 May 6 1981 mem
brw-rw-rw- 1 root 1, 64 Aug 24 17:41 mt0
crw-rw-rw- 1 root 3, 2 Sep 28 02:03 null
crw-rw-rw- 1 root 4, 64 Sep 9 15:42 rmt0
brw-r----- 1 root 2, 0 Sep 8 08:07 rp00
brw-r----- 1 root 2, 1 Sep 27 23:09 rp01
crw-r----- 1 root 13, 0 Apr 12 1983 rrp00
crw-r----- 1 root 13, 1 Jul 28 15:18 rrp01
crw-rw-rw- 1 root 2, 0 Jul 5 08:04 tty
crw--w--w- 1 root 1, 0 Sep 28 02:38 tty0
crw--w--w- 1 root 1, 1 Sep 27 23:09 tty1
crw--w--w- 1 root 1, 2 Sep 27 17:33 tty2
crw--w--w- 1 root 1, 3 Sep 27 18:48 tty3
$
Первое, что здесь бросается в глаза, это то, что вместо количества байтов указывается пара небольших целых чисел, а в первой позиции прав доступа используется 'b'
или 'c'
. В таком виде команда ls
выдает информацию из индексного дескриптора для файла устройств, но не для обычного файла. Обычному файлу предназначен хранимый в индексном дескрипторе список блоков памяти диска, в которых находится содержимое файла. В случае же файла устройств индексный дескриптор содержит внутреннее имя устройства, включающее его тип ( символьное с
или блочное b
) и пару чисел, называемых верхним и нижним числами устройства. К блочным устройствам относятся диски и магнитные ленты, а все остальное: терминалы, принтеры, линии сетевой связи и т.п. — к символьным. Верхнее число устройства обозначает его тип, а нижнее характеризует различные экземпляры устройств одного типа. Например, /dev/tty0
и /dev/tty1
— это два порта одного контроллера терминала, поэтому они имеют одно и то же верхнее число и различные нижние числа.
Файлы для дисков обычно именуются в соответствии с тем вариантом оборудования, которое представлено в системе. Файлы /dev/rp00
и /dev/rp01
названы так потому, что в системе используются дисковые накопители DEC RP06. Есть только один дисковый накопитель, логически поделенный на две файловые системы. Если бы существовал еще один накопитель, связанные с ним файлы имели бы имена /dev/rp10
и /dev/rp11
. Первая цифра обозначает номер накопителя, а вторая показывает, какая его часть используется.
У вас может возникнуть вопрос: почему существует несколько дисковых файлов устройств, а не одно? Исторически так сложилось (и для удобства поддержания), что файловая система была разделена на подсистемы. Файлы в подсистеме доступны через каталог главной системы. Программа /etc/mount
показывает соответствие между файлами устройств и каталогами:
Интервал:
Закладка: