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

Элемент fd файловой системы /proc — это подкаталог, в котором содержатся записи обо всех файлах, открытых процессом. Каждая запись представляет собой символическую ссылку на файл или устройство. Через эти ссылки можно осуществлять чтение и запись данных. Имена ссылок соответствуют номерам дескрипторов.

Рассмотрим небольшой трюк. Откройте новое терминальное окно и найдите с помощью команды ps идентификатор процесса, соответствующий интерпретатору команд:

% ps

 PID TTY       TIME CMD

1261 pts/4 00:00:00 bash

2455 pts/4 00:00:00 ps

В данном случае процесс идентификатора команд (bash) имеет идентификатор 1261. Теперь откройте второе окно и просмотрите содержимое подкаталога fd этого процесса:

% ls -l /proc/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 закрепляются за стандартными потоками ввода, вывода и ошибок соответственно. Таким образом, при записи в файл /proc/1261/fd/1 данные будут направляться в устройство, связанное с потоком stdout интерпретатора команд, т.е. на псевдотерминал первого окна. Попробуйте ввести следующую команду

% echo "Hello, world." >> /proc/1261/fd/1

Сообщение "Hello, world." появится в первом окне.

В подкаталоге fd могут присутствовать ссылки и на другие файлы. В листинге 7.6 показана программа, которая открывает файл, указанный в командной строке, и переходит в бесконечный цикл.

Листинг 7.6. (open-and-spin.c) Открытие файла для чтения

#include

#include

#include

#include

#include

int main(int argc, char* argv[]) {

 const char* const filename = argv[1];

 int fd = open(filename, O_RDONLY);

 printf("in process %d, file descriptor %d is open to %s\n",

  (int)getpid(), (int)fd, filename);

 while (1);

 return 0;

}

Запустите программу в терминальном окне:

% ./open-and-spin /etc/fstab

in process 2570, file descriptor 3 is open to /etc/fstab

Теперь откройте другое окно и проверьте подкаталог fd процесса с указанным номером:

% ls -l /proc/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/fstab, открытого программой.

Программа может открывать дескрипторы не только файлов, но также сокетов и каналов. В таких случаях адресатом символической ссылки будет строка "socket" или "pipe", а не имя файла либо устройства.

<p>7.2.6. Статистика использования процессом памяти</p>

Файл statm содержит список из семи чисел, разделенных пробелами. Каждое число — это счетчик числа страниц памяти, используемых процессом и попадающих в определенную категорию. Соответствующие категории перечислены ниже (в порядке следования счетчиков):

■ общий размер процесса;

■ размер резидентной части процесса;

■ память, совместно используемая с другими процессами (например, загруженные библиотеки или нетронутые страницы, созданные в режиме "копирование при записи");

■ текстовый размер процесса, т.е. размер сегмента кода исполняемого файла;

■ размер совместно используемых библиотек, загруженных процессом;

■ память, выделенная под стек процесса;

■ число недействительных страниц, т.е. страниц памяти, которые были модифицированы программой.

<p>7.2.7. Статистика процесса</p>

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

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных