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

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

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

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

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

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

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

процесса (задается, к примеру, функцией chdir I)).
* en vi гоп. Содержит переменные среды процесса; описан в разделе
/.2.3, "Переменные среды процесса".
¦ ехе. Является символической ссылкой на исполняемый файл процесса;
описай в разделе 7.2.4. "Исполняемый файл процесса".
¦ f d. Является подкаталогом, в котором содержатся ссылки иа файлы,
открытые процессом; описан в разделе 7.2.5, "Дескрипторы файлов
процесса".
¦ шаре. Содержит информацию о файлах, отображаемых в адресном
пространстве процесса. О механизме отображения файлов в памяти
рассказывалось в главе 5. "Взаимодействие процессов". Для каждого такого
файла выводится соответствующий диапазон ааресов в адресном пространстве
процесса, права доступа, имя файла и пр. К числу отображаемых файлов
относятся исполняемый файл процесса, а также загруженные библиотеки.
¦ root. Является символической ссылкой на корневой каталог процесса
(обычно это /). Корневой каталог можно сменить с помощью команды chroot
или функции chroot {).
* stat. Содержит статистическую информацию о процессе. Эти же данные
представлены в файле status, но здесь они находятся в неотформатированиом
виде и записаны в одну строку. Такой формат труден для восприятия, зато
проще в плане синтаксического анализа.
* statm. Содержит информацию об использовании памяти процессом,
описан в разделе 7.2.6, "Статистика использования процессом памяти".
* status. Содержит статистическую информацию о процессе, причем в
отформатированном виде; описан в разделе 7 2.7, "Статистика процесса".
¦ ери. Этот файл появляется только в симметричных многопроцессорных
системах и содержит информацию об использовании процессорного времени
(пользователями и системой).
Из соображений безопасности права доступа к некоторым файлам
предоставляются только владельцу процесса и суперпользователю.
7.2.1. Файл /proc/self
В файловой системе /ргос есть дополнительный элемент, позволяющий
программам находить информацию о своем собственном процессе, файл
/ргос/self является символической ссылкой на каталог, соответствующий
текущему процессу. Естественно, содержимое ссылки меняется в зависимости
от того, кто к ней обращается.
Например, программа, представленная в листинге7.2. с помощью файла
/proc/self определяет свой идентификатор процесса (это делается лишь в
демонстрационных целях, гораздо проще пользоваться функцией getpidO,
описанной в разделе 3.1.1, "Идентификаторы процессов") Для чтения
содержимого символической ссылки вызывается функция readlink() (описана в
разделе 8.11. "Функция readhnkQ: чтение символических ссылок").
140 Часть II Секреты Linux
Листинг 7.2. (grt-pid.c) Получение идентификатор* процесса из файла
/proc/eelf
•include <stdio.h> iinclude "вув/types h>
#include <unistd.h>
/* Определение идентификатора вызывавшего процесса на основании
символической ссылки /proc/self. •/
pid_t get_pid_from_proc_sel? ()
(
char target 132]; int pid;
t* Чтение содержимого символической ссылки. •/ readlink ('/proc/self*,
target, siieof (target)),-/* Адресатом ссылки является каталог, имя
которого соответствует идентификатору процесса. */ sscanf (target, "%d*,
bpid); return (pid_t> pid;
}
int main {)
(
printf ("/proc/self reports process id %d\n",
(int) get_pid_?ron\_proc_sel? ()); printf ("getpidO reports process id
%d\n', tint) getpid ()); return 0;
]
7.2.2. Список аргументов процесса
Файл cmd line в файловой системе /pro с содержит список аргументов
процесса (см. раздел 2.1.1. '"Список аргументов"). Этот список
представлен одной строкой, в которой аргументы отделяются друг от друга
нулевыми символами. Большинство функций работы со строками предполагает,
что нулевым символом оканчивается вся строка, поэтому они не смогут
правильно обработать файл cmdl ine.
В листинге 2.1 приводилась программа, которая отображала переданный ей
список аргументов. Теперь, когда мы узнали назначение файлов cmdline
файловой системы /proс, можно иалисать программу, отображающую список
аргументов другого процесса. Ее текст показан в листинге 7.3. Поскольку в
строке файла cmdl те может содержаться несколько нулевых символов, ее
длину нельзя определить с помощью функции st rlen () (она лишь
подсчитывает число символов, пока ие встретится нулевой символ).
Приходится полагаться иа функцию read (), которая возвращает число
прочитанных байтов.
Листинг 7.S. (/rtnNwyftrf.c) Отображение списка аргументом указанного
процесса
¦include <fcntl.h>
•include <stdio.h>
"include <stdlib.h>
Iinclude <sys/stat-h>
•include <sys/types.h>
•include <unistd.h>
/* Вывод списка аргументов (по одному в строке) процесса с заданным
идентификатором. */
void print_process_arg_list (pid_t pidj (
int fd;
Глава 7 Файловая система /ргос 141
char filennme{24]; char arg_liet(102C]; aize_t length; char* next_erg?
t* Определение полного имени файла cmdline для заданного процесса. */
enprincf (filename, sizeof (filename)Л p/proc/%d/cmdline",
[int> pid);
/* Чтение содержимого файла. */
Предыдущая << 1 .. 59 60 61 62 63 64 < 65 > 66 67 68 69 70 71 .. 128 >> Следующая