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

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

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

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

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

Программирование для Linux. Профессиональный подход - Митчелл М.

Митчелл М., Оулдем Дж., Самьюал А. Программирование для Linux. Профессиональный подход — М.: Вильямс , 2003. — 288 c.
ISBN 5-8459-0243-6
Скачать (прямая ссылка): programmirovaniedlyalinux2003.djvu
Предыдущая << 1 .. 61 62 63 64 65 66 < 67 > 68 69 70 71 72 73 .. 128 >> Следующая

return 0;
>
7.2.5. Дескрипторы файлов процесса
Элемент fd файловой системы /ргос - это подкаталог, в котором содержатся
записи обо всех файлах, открытых процессом Каждая запись представляет
собой символическую ссылку иа файл или устройство. Через эти ссылки можно
осуществлять чтение и запись даниых. Имена ссылок соответствуют номерам
дескрипторов.
Рассмотрим небольшой трюк. Откройте новое терминальное окно и найдите с
помощью команды ps идентификатор процесса, соответствующий интерпретатору
команд:
% ps
PID TTY TIME CMD
1261 pts/4 00:00:00 bash ,
2455 pts/fl 00:00:00 ps
В данном случае процесс идентификатора команд (bash) имеет идентификатор
1261. Теперь откройте второе окно и просмотрите содержимое подкаталога fd
этого процесса:
144 Часть II Секреты Linux
% Is -1 /ргос/1261/fd total 0
lrwx------- 1 samuel samuel 64 Jan 30 01:02 0 ->
/dev/pts/4
lrwx------- 1 samuel samuel 64 Jan 30 01:02 1 ->
/dev/pts/4
lrwx------- 1 samuel samuel 64 Jan 30 01:02 2 ->
/dev/pts/4
(В выводе могут присутствовать дополнительные строки, соответствующие
другим открытым файлам.) Вспомните* в разделе 2.1.4, "Стандартный ввод-
вывод", рассказывалось о том. что дескрипторы 0. 1 и 2 закрепляются за
стандартными потоками ввода, вывода и ошибок соответственно. Таким
образом, при записи в файл /ргос/1261/fd/l данные будут направляться в
устройство, связанное с потоком stdout интерпретатора команд, т.е. на
псевдотерминал первого окна. Попробуйте ввести следующую команду % echo
"Hello, world.' " /ргос/1261/fd/1 Сообщение "Hello, world." появится в
первом окне.
В подкаталоге f d могут присутствовать ссылки н на другие файлы. В
листинге 7.6 нока-дана программа, которая открывает файл, указанный в
командной строке, и переходит в бесконечный цикл.
Листинг 7.6. (ofxn-and fpin.c) Открытие файла для чтения
•include <?cntl.h>
•include <stdio h>
• include -"sye/Btat .h>
•include <sys/types.h>
• include <umstd-h>
int main tint argc, char* argvl})
(
const char* const filename = argvil]; int fd * open (filename, 0_RD0NL*);
printf fin process %d, file descriptor %d is open to %s\n*, (int) getpid
(>, lint) fd. filename); while (1); return 0;
)
Запустите программу в терминальном окне:
% ./open-and-spin /etc/fstab
in process 2570, file descriptor 3 is open to /etc/fstab
Теперь откройте другое окно и проверьте подкаталог fd процесса с
указанным номером:
% Is -1 /ргос/2570/fd total 0
lrwx-------- 1 samuel samuel 64 Jan 30 01:30 0
-> /dev/pts/2
lrwx------- 1 samuel samuel 64 Jan 30 01:30 1 ->
/dev/pts/2
lrwx------- 1 samuel samuel 64 Jan 30 01:30 2 ->
/dev/pts/2
lr-x-------- 1 samuel samuel 64 Jan 30 01:30 3
-> /etc/fstab
Как видите, появилась, ссылка 3, которая соответствует дескриптор) файла
/etc/f stab, открытого программой.
Программа может открывать дескрипторы не только файлов, но также сокетов
н каналов. В таких случаях адресатом символической ссылки будет строка
"socket" или "pipe" а не имя файла либо устройства.
Глава 7 Файловая система /ргос 145
7.2.6. Статистика использования процессом памяти
Файл statin содержит список из семи чисел, разделенных пробелами. Каждое
число - это счетчик числа страниц памяти, используемых процессом и
попадающих в определен* ную категорию. Соответствующие категории
перечислены ниже (в порядке следования счетчиков):
¦ общий размер процесса;
и размер резидентной части процесса:
¦ память, совместно используемая с другими процессами (например,
загруженные библиотеки или нетронутые страницы, созданные в режиме
"копирование прн записи");
¦ текстовый размер процесса, т.е. размер сегмента кода исполняемого
файла;
¦ размер совместно испол ьзуемых библиотек, загруженных процессом;
¦ память, выделенная под стек процесса;
¦ число недействительных страниц, т.е. страниц памяти, которые были
модифицированы программой.
7.2.7. Статистика процесса
Файл status содержит все возможную информацию о процессе,
отформатированную в понятном для пользователя виде. Сюда входит
идентификатор процесса, идентификатор родительского процесса, реальный и
эффективный идентификаторы пользователя и группы, статистика
использования памяти, а также битовые маски, определяющие, какие сигналы
перехватываются, игнорируются или блокируются.
7.3. Аппаратная информация
В файловой системе /ргос есть ряд других элементов, позволяющих получить
доступ к информации о системных аппаратных средствах. Обычно это
интересно лишь системным администраторам, но иногда такая информация
используется н в приложениях. Ниже описано несколько наиболее полезных
файлов
7.3.1. Центральный процессор
Как уже говорилось, файл /proc/cpuinfo содержит информацию о центральном
процессоре (или процессорах, если их больше одного). В поле "processor"
перечислены номера процессоров. В случае однопроцессорной системы там
будет стоять 0. Благодаря полям *'vendor_id", "cpu family", "model" и
''stepping" можно точно узнать модель и модификацию процессора. В поле
Предыдущая << 1 .. 61 62 63 64 65 66 < 67 > 68 69 70 71 72 73 .. 128 >> Следующая