Чтение онлайн

на главную - закладки

Жанры

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

Самьюэл Алекс

Шрифт:

■ 

fd
. Является подкаталогом, в котором содержатся ссылки на файлы, открытые процессом: описан в разделе 7.2.5, "Дескрипторы файлов процесса".

■ 

maps
. Содержит информацию о файлах, отображаемых в адресном пространстве процесса. О механизме отображения файлов в памяти рассказывалось в главе 5. "Взаимодействие процессов". Для каждого такого файла выводится соответствующий диапазон адресов в адресном пространстве процесса, права доступа, имя файла и пр. К числу отображаемых файлов относятся исполняемый файл процесса,
а также загруженные библиотеки.

■

root
. Является символической ссылкой на корневой каталог процесса (обычно это
/
). Корневой каталог можно сменить с помощью команды
chroot
или функции
chroot
.

■

stat
. Содержит статистическую информацию о процессе. Эти же данные представлены в файле
status
, но здесь они находятся в неотформатированном виде и записаны в одну строку. Такой формат труден для восприятия, зато проще в плане синтаксического анализа.

■

statm
. Содержит информацию об использовании памяти процессом, описан в разделе 7.2.6. "Статистика использования процессом памяти".

■

status
. Содержит статистическую информацию о процессе, причем в отформатированном виде; описан в разделе 7 2.7, "Статистика процесса".

■

cpu
. Этот файл появляется только в симметричных многопроцессорных системах и содержит информацию об использовании процессорного времени (пользователями и системой).

Из соображений безопасности права доступа к некоторым файлам предоставляются только владельцу процесса и суперпользователю.

7.2.1. Файл /proc/self

В файловой системе

/proc
есть дополнительный элемент, позволяющий программам находить информацию о своем собственном процессе. Файл
/proc/self
является символической ссылкой на каталог, соответствующий текущему процессу. Естественно, содержимое ссылки меняется в зависимости от того, кто к ней обращается.

Например, программа, представленная в листинге 7.2, с помощью файла

/proc/self
определяет свой идентификатор процесса (это делается лишь в демонстрационных целях, гораздо проще пользоваться функцией
getpid
, описанной в разделе 3.1.1, "Идентификаторы процессов"). Для чтения содержимого символической ссылки вызывается функция
readlink
(описана в разделе 8.11, "Функция readlink: чтение символических ссылок").

Листинг 7.2. (get-pid.c) Получение идентификатора процесса из файла
/proc/self

#include <stdio.h>

#include <sys/types.h>

#include <unistd.h>

/* Определение идентификатора вызывающего процесса

на основании символической ссылки /proc/self. */

pid_t get_pid_from_proc_self {

 char target[32];

 int pid;

 /* Чтение содержимого символической ссылки. */

 readlink("/proc/self", target, sizeof(target));

 /* Адресатом ссылки является каталог, имя которого соответствует

идентификатору процесса. */

 sscanf(target, "%d", &pid);

 return (pid_t)pid;

}

int main {

 printf("/proc/self reports process id %d\n",

(int)get_pid_from_proc_self);

 printf("getpid reports process id %d\n", (int)getpid);

 return 0;

}

7.2.2. Список аргументов процесса

Файл

cmdline
в файловой системе /proc содержит список аргументов процесса (см. раздел 2.1.1. "Список аргументов"). Этот список представлен одной строкой, в которой аргументы отделяются друг от друга нулевыми символами. Большинство функций работы со строками предполагает, что нулевым символом оканчивается вся строка, поэтому они не смогут правильно обработать файл
cmdline
.

В листинге 2.1 приводилась программа, которая отображала переданный ей список аргументов. Теперь, когда мы узнали назначение файлов

cmdline
файловой системы
/proc
, можно написать программу, отображающую список аргументов другого процесса. Ее текст показан в листинге 7.3. Поскольку в строке файла
cmdline
может содержаться несколько нулевых символов, ее длину нельзя определить с помощью функции
strlen
(она лишь подсчитывает число символов, пока не встретится нулевой символ). Приходится полагаться на функцию
read
, которая возвращает число прочитанных байтов.

Листинг 7.3. (print-arg-list.c) Отображение списка аргументов указанного процесса

#include <fcntl.h>

#include <stdio.h>

#include <stdlib.h>

#include <sys/stat.h>

#include <sys/types.h>

#include <unistd.h>

/* Вывод списка аргументов (по одному в строке) процесса

с заданным идентификатором. */

Поделиться:
Популярные книги

Опыты

Монтень Мишель
Научно-образовательная:
философия
7.43
рейтинг книги
Опыты

Добыча. Всемирная история борьбы за нефть, деньги и власть

Ергин Дэниел
Документальная литература:
публицистика
5.00
рейтинг книги
Добыча. Всемирная история борьбы за нефть, деньги и власть

Дважды одаренный. Том VI

Тарс Элиан
6. Дважды одаренный
Фантастика:
аниме
альтернативная история
фэнтези
фантастика: прочее
5.50
рейтинг книги
Дважды одаренный. Том VI

Воины

Хобб Робин
Фантастика:
фэнтези
7.00
рейтинг книги
Воины

Вечера в древности

Мейлер Норман
Проза:
классическая проза
историческая проза
5.00
рейтинг книги
Вечера в древности

Годы странствий

Чулков Георгий Иванович
Документальная литература:
биографии и мемуары
6.25
рейтинг книги
Годы странствий

Цикл романов "Целитель". Компиляция. Книги 1-17

Большаков Валерий Петрович
Целитель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Цикл романов Целитель. Компиляция. Книги 1-17

12

Санивский Сергей Анатолиевич
5.00
рейтинг книги
12

Путь Шедара

Кораблев Родион
4. Другая сторона
Фантастика:
боевая фантастика
6.83
рейтинг книги
Путь Шедара

Месть Седьмой

Лор Питтакус
5. Наследие Лориена
Фантастика:
фэнтези
9.05
рейтинг книги
Месть Седьмой

Солнечная система (Астрономия и астрофизика)

Сурдин Владимир Георгиевич
Научно-образовательная:
прочая научная литература
астрономия и космос
5.00
рейтинг книги
Солнечная система (Астрономия и астрофизика)

Газлайтер. Том 19

Володин Григорий Григорьевич
19. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
6.25
рейтинг книги
Газлайтер. Том 19

Законы Рода. Том 5

Мельник Андрей
5. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 5

Техники ландшафтной арт-терапии

Копытин Александр Иванович
Научно-образовательная:
психотерапия и консультирование
5.00
рейтинг книги
Техники ландшафтной арт-терапии