Марк Митчелл - Программирование для Linux. Профессиональный подход
- Название:Программирование для Linux. Профессиональный подход
- Автор:
- Жанр:
- Издательство:Вильямс
- Год:2002
- Город:Москва
- ISBN:5-8459-0243-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Марк Митчелл - Программирование для Linux. Профессиональный подход краткое содержание
Данная книга в основном посвящена программированию в среде GNU/Linux. Авторы применяют обучающий подход, последовательно излагая самые важные концепции и методики использования расширенных возможностей системы GNU/Linux в прикладных программах. Читатели научатся писать программы, к интерфейсу которых привыкли пользователи Linux; освоят такие технологии, как многозадачность, многопотоковое программирование, межзадачное взаимодействие и взаимодействие с аппаратными устройствами; смогут улучшить свои программы, сделав их быстрее, надежнее и безопаснее; поймут особенности системы GNU/Linux, ее ограничения, дополнительные возможности и специфические соглашения.
Книга предназначена для программистов, уже знакомых с языком С и имеющих базовый опыт работы в GNU/Linux.
Программирование для Linux. Профессиональный подход - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
7.5.2. Диски и разделы
В файловой системе /proc
находятся данные об устройствах, подключенных как к IDE-так и к SCSI-контроллерам (если таковые имеются). Обычно в каталоге /proc/ide
есть один или два подкаталога ( ide0
и ide1
) для основного и дополнительного IDE-контроллеров системы. [25] Если ядро Linux сконфигурировано правильно, оно поддерживает дополнительные IDE-контроллеры, нумеруемые последовательно начиная от ide2 .
В этих подкаталогах будут другие подкаталоги, которые соответствуют физическим устройствам, подключенным к контроллерам. В случае, если устройство не распознано системой, подкаталог не создается. В табл. 7.1 указаны путевые имена каталогов для четырех возможных IDE-устройств.
Таблица 7.1. Каталоги, соответствующие четырем возможным IDE-устройствам
Контроллер | Устройство | Подкаталог |
---|---|---|
Основной | Главное | /рroc/ide/ide0/hda/ |
Основной | Подчиненное | /proc/ide/ide0/hdb/ |
Дополнительный | Главное | /proc/ide/ide1/hdc/ |
Дополнительный | Подчиненное | /proc/ide/ide1/hdd/ |
В каталоге каждого IDE-устройства есть несколько файлов, хранящих конфигурационные данные устройства. Перечислим наиболее важные из них.
■ model
. Содержит строку идентификации устройства.
■ media
. Описывает тип носителя. Возможные значения: disk
, cdrom
, tape
, floppy
и UNKNOWN
.
■ capacity
. Определяет емкость устройства (в 512-байтовых блоках). Для дисководов CD-ROM значением будет 2³¹-1, а не емкость компакт-диска, вставленного в дисковод. Находящееся в данном файле значение представляет емкость всего физического диска. Емкость файловых систем, содержащихся в разделах диска, будет меньше.
Ниже показано, как определить тип носителя и идентификатор главного устройства, подключенного к дополнительному IDE-контроллеру:
% cat /proc/ide/ide1/hdc/media
cdrom
% cat /proc/ide/ide1/hdc/model
TOSHIBA CD-ROM XM-6702B
В данном случае это дисковод CDROM компании Toshiba.
Если в системе есть SCSI-устройства, в файле /proc/scsi/scsi
будет находиться сводка их идентификаторов. Содержимое этого файла выглядит примерно так
% cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: QUANTUM Model: ATLAS_V__9_WLS Rev: 0230
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi0 Channel: 00 Id: 04 Lun: 00
Vendor: QUANTUM Model: QM39100TD-SW Rev: N491
Type: Direct-Access ANSI SCSI revision: 02
В системе присутствует один одноканальный SCSI-контроллер (обозначен как scsi0
), к которому подключены два дисковых накопителя Quantum со SCSI-номерами 0 и 4.
В файле /proc/partitions
содержатся сведения о разделах распознанных дисковых устройств. Для каждого раздела указываются старший и младший номера, число однокилобайтовых блоков, а также имя устройства, соответствующего этому разделу.
Файл /proc/sys/dev/cdrom/info
хранит различные данные о возможностях дисководов CD ROM. Записи этого файла не требуют особых пояснений:
% cat /proc/sys/dev/cdrom/info
CD-ROM information, Id: cdrom.с 2.56 1999/09/09
drive name: hdc
drive speed: 48
drive # of slots: 0
Can close tray: 1
Can open tray: 1
Can lock tray: 1
Can change speed: 1
Can select disk: 0
Can read multisession: 1
Can read MCN: 1
Reports media changed: 1
Can play audio: 1
7.5.3. Точки монтирования
В файле /proc/mounts
находится перечень смонтированных файловых систем. Каждая строка соответствует одному дескриптору монтирования и содержит имя устройства, имя точки монтирования и прочие сведения. Та же самая информация хранится в обычном файле /etc/mtab
, который автоматически обновляется командой mount
.
Ниже перечислены элементы дескриптора монтирования.
■ Первый элемент строки — это имя смонтированного устройства. Для специальных файловых систем, например /proc
, здесь стоит значение none
.
■ Второй элемент — это имя точки монтирования, т.е. места в корневой файловой системе, где появится содержимое монтируемой файловой системы. Для самой корневой системы точка монтирования обозначается символом /
. Разделам подкачки соответствует точка монтирования swap
.
■ Третий элемент — это тип файловой системы. В настоящее время на жестких дисках Linux в основном устанавливаются файловые системы типа ext2
, но диски DOS и Windows могут монтироваться с файловыми системами других типов, например fat
или vfat
. Тип файловых систем большинства компакт-дисков — iso9660
. Список типов файловых систем приведен на man
-странице команды mount
.
■ Четвертый элемент — это флаги монтирования. Они указываются при добавлении точки монтирования. Пояснение этих флагов также дано на man
-странице команды mount
.
В файле /proc/mounts
последние два элемента всегда равны нулю и никак не интерпретируются.
Подробнее о формате дескрипторов монтирования можно узнать на man
-странице fstab
. В Linux есть функции, позволяющие анализировать содержимое дескрипторов монтирования. За дополнительной информацией обратитесь к man
-странице функции getmntent()
.
7.5.4. Блокировки
В файле /proc/locks
перечислены все блокировки файлов, установленные в настоящий момент в системе. Каждая строка соответствует одной блокировке.
Для блокировок, созданных функцией fcntl()
(описана в разделе 8.3. "Функция fcntl(): блокировки и другие операции над файлами"), первыми двумя элементами строки будут слова POSIX
и ADVISORY
. Третьим элементом будет WRITE
или READ
, в зависимости от типа блокировки. Следующее число — это идентификатор процесса, установившего блокировку. За ним идут три числа, разделенные двоеточиями. Это старший и младший номера устройства, на котором расположен файл, а также номер индексного дескриптора, оказывающий на местоположение файла в файловой системе. Оставшиеся числа используются внутри ядра и не представляют интереса.
Чтобы понять, как работает файл /proc/locks
, запустите программу, приведенную в листинге 8.2. и поставьте блокировку записи на файл /tmp/test-file
.
% touch /trap/test-file
% ./lock-file /tmp/test-file
file /tmp/test-file
opening /tmp/test-file
locking
locked; hit enter to unlock...
В другом окне просмотрите содержимое файла /proc/ locks
:
% cat /proc/locks
ls POSIX ADVISORY WRITE 5467 08:05:181288 0 2147483647 d1b5f740
00000000 dfea7d40 00000000 00000000
В файле могут присутствовать дополнительные строки, если какие-то программы устанавливали свои блокировки. В данном случае идентификатор процесса программы lock-file
— 5467. Убедимся в этом с помощью команды ps:
% ps 5467
PID TTY STAT TIME COMMAND
Интервал:
Закладка: