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

Здесь есть возможность читать онлайн «Марк Митчелл - Программирование для Linux. Профессиональный подход» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2002, ISBN: 2002, Издательство: Вильямс, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программирование для Linux. Профессиональный подход: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программирование для Linux. Профессиональный подход»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Данная книга в основном посвящена программированию в среде GNU/Linux. Авторы применяют обучающий подход, последовательно излагая самые важные концепции и методики использования расширенных возможностей системы GNU/Linux в прикладных программах. Читатели научатся писать программы, к интерфейсу которых привыкли пользователи Linux; освоят такие технологии, как многозадачность, многопотоковое программирование, межзадачное взаимодействие и взаимодействие с аппаратными устройствами; смогут улучшить свои программы, сделав их быстрее, надежнее и безопаснее; поймут особенности системы GNU/Linux, ее ограничения, дополнительные возможности и специфические соглашения.
Книга предназначена для программистов, уже знакомых с языком С и имеющих базовый опыт работы в GNU/Linux.

Программирование для Linux. Профессиональный подход — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программирование для Linux. Профессиональный подход», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

#include

#include

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

на основании символической ссылки /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

#include

#include

#include

#include

#include

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

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

void print_process_arg_list(pid_t pid) {

int fd;

char filename[24];

char arg_list[1024];

size_t length;

char* next_arg;

/* Определение полного имени файла cmdline

для заданного процесса. */

snprintf(filename, sizeof(filename), "/proc/%d/cmdline",

(int)pid);

/* Чтение содержимого файла. */

fd = open(filename, O_RDONLY);

length = read(fd, arg_list, sizeof(arg_list));

close(fd);

/* Функция read() не помещает в конец текста нулевой символ,

поэтому его приходится добавлять отдельно. */

arg_list[length] = '\0';

/* Перебор аргументов. Аргументы отделяются друг от друга

нулевыми символами. */

next_arg = arg_list;

while (next_arg < arg_list + length) {

/* Вывод аргументов. Каждый из них оканчивается нулевым

символом и потому интерпретируется как обычная строка. */

printf("%s\n", next_arg);

/* Переход к следующем аргументу. Поскольку каждый аргумент

заканчивается нулевым символом, функция strlen() вычисляет

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «Программирование для Linux. Профессиональный подход» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Программирование для Linux. Профессиональный подход»

Обсуждение, отзывы о книге «Программирование для Linux. Профессиональный подход» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x